2017-09-13 5 views
1

転置またはピボットを使用して関連するトピックを見てきましたが、動作させることはできません。 私は2つの列、タイムスタンプと分のようなデータを持つデータフレームを持っています。パンダ分分のデータ列から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 

のように見えます私は私が何とか 、60分かけてGROUPBYを経由して、ループのためにこれを行うために管理が、私はかしら新しいDFは、本質的に

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

になりたいですこれを行うためのよりコンパクトな方法があります。

答えて

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で@TedPetrouから素敵な.dt.floorを取ります。 +1 –

+0

それと並行して2つの質問:) –

+0

魅力のように動作します。ありがとう。 +1 – reicja

1

...​​と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 
関連する問題