pandas 分钟数据列到 60 分钟数据列
pandas minute data column to 60 minute columns
我看到过使用转置或枢轴的相关主题,但无法使其正常工作。
我有两列数据框,时间戳和类似分钟的数据。
我想转置数据框,以便最终得到 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 和 for 循环完成了 60 分钟,
但我想知道是否有更紧凑的方法来做到这一点。
您可以为日小时和分钟创建新列,然后旋转 table。
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
从@TedPetrou set_index
和 unstack
获取 .dt.floor
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
我看到过使用转置或枢轴的相关主题,但无法使其正常工作。 我有两列数据框,时间戳和类似分钟的数据。
我想转置数据框,以便最终得到 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 和 for 循环完成了 60 分钟, 但我想知道是否有更紧凑的方法来做到这一点。
您可以为日小时和分钟创建新列,然后旋转 table。
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
从@TedPetrou set_index
和 unstack
.dt.floor
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