我有一个有两列的时间序列数据集。第一列是时间戳,第二列是数据。时间戳按分钟排序,涵盖整年。
Timestamp Data
1/1/2017 0:00 50
1/1/2017 0:01 80
...
12/31/2017 23:59 100
所以现在我希望将数据集重新排列到一个表,每个列代表不同的日期,但行仍然代表每分钟的数据。新数据集将类似于
1/1 1/2 1/3 ....... 12/31
0:00 50 60 34 ....... 67
0:01 34 211 90 ....... 90
...
23:59
有没有办法快速做到这一点?
答案 0 :(得分:2)
首先将“时间戳”列拆分为日期和时间。如何做到这一点取决于它是真正的时间戳还是字符串。如果是时间戳,请执行(使用'Date'作为列名以避免与内置'时间戳'的pandas混淆
df['Day'] = df['Date'].map(pd.Timestamp.date)
df['Time'] = df['Date'].map(pd.Timestamp.time)
del df['Date']
请使用pivot_table:
pd.pivot_table(df, values='Data', index=['Time'], columns=['Day'])