[英]pandas: convert the number of the day and the hour
我有以下數據框:
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
指令中設法做到這pd.to_datetime
?
提前致謝。
您還可以構造一個字符串並指定顯式格式:
s = '201301' + df['day'].astype(str).str.zfill(2) + df['hour'].astype(str).str.zfill(2)
df['date'] = pd.to_datetime(s, errors='ignore', format='%Y%m%d%H')
print(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
從已經創建的date
列開始,使用unit='h'
的熊貓timedelta
:
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'))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.