假设我有一个时间戳值的数据帧sales
:
timestamp sales_office
2014-01-01 09:01:00 Cincinnati
2014-01-01 09:11:00 San Francisco
2014-01-01 15:22:00 Chicago
2014-01-01 19:01:00 Chicago
我想创建一个新列time_hour
。我可以按原样编写一个短函数并使用apply()
迭代地应用它来创建它:
def hr_func(ts):
return ts.hour
sales['time_hour'] = sales['timestamp'].apply(hr_func)
然后我会看到这个结果:
timestamp sales_office time_hour
2014-01-01 09:01:00 Cincinnati 9
2014-01-01 09:11:00 San Francisco 9
2014-01-01 15:22:00 Chicago 15
2014-01-01 19:01:00 Chicago 19
我想实现的是像这样一个更短的转变(我知道这是错误的,但我得到的精神):
sales['time_hour'] = sales['timestamp'].hour
很明显,该列是Series
类型,因此不具有这些属性,但是似乎有一种更简单的方法来使用矩阵运算。
有没有更直接的方法?
假设timestamp是数据帧的索引,您可以
如果你想把它添加到你的销售数据框中,只要
编辑: 如果您有几列datetime对象,则其进程相同。如果数据框中有一列[“date”],并且假定“date”具有datetime值,则可以从“date”访问小时:
编辑2: 如果要调整数据帧中的列,则必须包含
dt
:对于后代:从0.15.0开始,有一个方便的.dt accessor可用于从日期时间/周期序列中提取此类值(在上述情况下,仅
sales.timestamp.dt.hour
!您可以使用lambda expression,例如:
相关问题 更多 >
编程相关推荐