簡體   English   中英

熊貓:轉換日期和小時數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM