日期时间值重新排列

问题描述 投票:1回答:1

嗨我有一个数据框df与以下列,所以值是整个月。

    Timestamp               Count
0   2017-10-01 00:00:00     783
1   2017-10-01 01:00:00     662
2   2017-10-01 02:00:00     075
3   2017-10-01 03:00:00     272
4   2017-10-01 04:00:00     381

我想按行每小时的顺序放置值

需要输出

       Hour1   Hour2    Hour3 ......... Hour24
Day1   783     662       075  .........
Day2   ...................................
pandas date time pivot transpose
1个回答
0
投票

使用由pandas.pivot转换为Timestampdatehour,最后添加add_prefixrename_axis

df = (pd.pivot(df['Timestamp'].dt.date, 
              df['Timestamp'].dt.hour + 1, 
              df['Count'])
        .add_prefix('Hour')
        .rename_axis(None)
        .rename_axis(None, axis=1))

替代方案是set_indexunstack

df = (df.set_index([df['Timestamp'].dt.date, df['Timestamp'].dt.hour + 1])['Count']
        .unstack()
        .add_prefix('Hour')
        .rename_axis(None)
        .rename_axis(None, axis=1))

print (df)
            Hour1  Hour2  Hour3  Hour4  Hour5
2017-10-01    783    662     75    272    381
© www.soinside.com 2019 - 2024. All rights reserved.