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_indexunstack

获取 .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