2017-09-13 85 views
1

我已經看到相關主題使用換位或數據透視,但無法使其工作。 我有兩列數據幀,時間戳和分鐘數據。熊貓分鐘數據列到60分鐘列

我想轉置數據框,以便最終得到61列,如下所示;

老DF看起來像

Date     Value 
0 2017-01-01 16:45  12 
1 2017-01-01 16:46  22 
    ...      ... 
n 2017-03-01 11:45  12 

我希望新的DF基本上是

DayHour   ... Minute45 Minute46 ... 
0 2017-01-01 16  ... 12   22   ... 
    ...    ... ...  ...  ... 
n 2017-03-01 11  ... 12   ...  ... 

我總算通過GROUPBY和循環60分鐘, 這樣做,但我不知道是否有更緊湊的方式來做到這一點。

回答

4

您可以爲DayHour和分鐘創建新列,然後旋轉表格。

df.assign(DayHour = df.Date.dt.floor('h'), minute=df.Date.dt.minute)\ 
    .pivot(index='DayHour', columns='minute', values='Value')\ 
    .add_prefix('Minute') 

minute    Minute45 Minute46 
DayHour         
2017-01-01 16:00:00  12.0  22.0 
2017-03-01 11:00:00  12.0  NaN 
+0

.dt.floor ...好。 +1 –

+0

連續兩個問題:) –

+0

工程就像一個魅力。謝謝。 +1 – reicja

1

.dt.floor從@TedPetrou與​​和unstack

In [58]: (df.set_index([df.Date.dt.floor('h'), df.Date.dt.minute])['Value'] 
      .unstack().add_prefix('Minute')) 
Out[58]: 
Date     Minute45 Minute46 
Date 
2017-01-01 16:00:00  12.0  22.0 
2017-03-01 11:00:00  12.0  NaN