我有以下数据框:
df.head()
Out[195]:
day hour power_kW
0 24 1 0.38180
1 24 2 0.17802
2 24 3 0.22356
3 24 4 0.17710
4 24 5 0.19389
其中的天列代表日期:24对应于1月24日(年份为2013),而日期151对应于5月31日。
数据框中的每一天都有24小时,这对应于功率的测量值。
我想获得一个包含年,日,月和小时的日期时间列。为此,我运行以下命令:
df['date'] = pd.to_datetime(df['day']-1,errors='ignore', unit='d',origin='2013-01')
,数据框变成这样:
df2.head()
Out[197]:
day hour power_kW date
0 24 1 0.38180 2013-01-24 00:00:00
1 24 2 0.17802 2013-01-24 00:00:00
2 24 3 0.22356 2013-01-24 00:00:00
3 24 4 0.17710 2013-01-24 00:00:00
4 24 5 0.19389 2013-01-24 00:00:00
我想将信息“小时”添加到“日期”列。我不想按1小时的时间范围按时间范围生成日期列,因为可能缺少数据。
是否可以在pd.to_datetime
指令中做到这一点?
谢谢。
答案 0 :(得分:1)
从您已经创建的date
列开始,将熊猫timedelta
与unit='h'
一起使用:
df['date'] = df['date'] + pd.to_timedelta(df['hour'], unit='h')
>>> df
day hour power_kW date
0 24 1 0.38180 2013-01-24 01:00:00
1 24 2 0.17802 2013-01-24 02:00:00
2 24 3 0.22356 2013-01-24 03:00:00
3 24 4 0.17710 2013-01-24 04:00:00
4 24 5 0.19389 2013-01-24 05:00:00
您也可以从原始数据帧开始从头开始:
df['date'] = (pd.to_datetime(df['day']-1,errors='ignore',
unit='d',origin='2013-01') +
pd.to_timedelta(df['hour'], unit='h'))