Dan*_*ack 40 python datetime pandas
假设我有一个sales
时间戳值的DataFrame :
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
Run Code Online (Sandbox Code Playgroud)
我想创建一个新列time_hour
.我可以通过编写一个简短的函数来创建它,并使用apply()
迭代应用它:
def hr_func(ts):
return ts.hour
sales['time_hour'] = sales['timestamp'].apply(hr_func)
Run Code Online (Sandbox Code Playgroud)
然后我会看到这个结果:
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
Run Code Online (Sandbox Code Playgroud)
什么我想实现的是这样一些较短的转变(我知道是错误的,但在精神得到):
sales['time_hour'] = sales['timestamp'].hour
Run Code Online (Sandbox Code Playgroud)
显然,列是类型的Series
,因此没有这些属性,但似乎有一种更简单的方法来使用矩阵运算.
有更直接的方法吗?
Sud*_*sak 25
假设时间戳是数据帧的索引,您可以这样做
hours = sales.index.hour
Run Code Online (Sandbox Code Playgroud)
如果要将其添加到销售数据框中,请执行此操作
import pandas as pd
pd.concat([sales, pd.DataFrame(hours, index=sales.index)], axis = 1)
Run Code Online (Sandbox Code Playgroud)
编辑:如果您有多列datetime对象,则其过程相同.如果数据框中有一列['date'],并假设'date'具有datetime值,则可以从'date'访问小时:
hours = sales['date'].hour
Run Code Online (Sandbox Code Playgroud)
小智 12
您可以使用lambda表达式,例如:
sales['time_hour'] = sales.timestamp.apply(lambda x: x.hour)
Run Code Online (Sandbox Code Playgroud)
小智 7
您可以尝试以下方法:
sales['time_hour'] = pd.to_datetime(sales['timestamp']).dt.hour
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
66763 次 |
最近记录: |