我见过使用转置或转轴的相关主题,但无法使其正常工作。 我有数据框,有两列,时间戳和分钟数据。
我想转置数据框,以便最终得到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分钟, 但我想知道是否有更紧凑的方式来做到这一点。
答案 0 :(得分: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
答案 1 :(得分:1)
使用.dt.floor
和set_index
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