我正在寻找一种将数据转换为不同形状的方法。 现在Data.head()看起来如下:
Time A B C
2009-02-20 11:00:00 -0.003776 -0.001606 -0.000150
2009-02-20 12:00:00 -0.004145 0.007597 -0.000054
2009-02-20 13:00:00 -0.007896 0.017419 -0.000241
2009-02-23 11:00:00 -0.015349 0.010237 -0.000328
2009-02-23 12:00:00 -0.002748 0.004150 -0.000070
2009-02-23 13:00:00 -0.007760 0.011192 -0.000270
我希望我的数据按天分组。我看起来像这样:
Day
2009-02-20 A(11:00) A(12:00) A(13:00) B(11:00) B(12:00) B(13:00) C(11:00) etc
2009-02-23 A(11:00) A(12:00) A(13:00) B(11:00) B(12:00) B(13:00) C(11:00) etc
我认为groupby文档,但无法找到这样做的方式。
答案 0 :(得分:1)
我认为您可以将pivot_table
与dt.date
,dt.time
或dt.strftime
一起使用:
df['time'] = df['Time'].dt.time
df['date'] = df['Time'].dt.date
print pd.pivot_table(df, index='date', columns='time')
A B \
time 11:00:00 12:00:00 13:00:00 11:00:00 12:00:00 13:00:00
date
2009-02-20 -0.003776 -0.004145 -0.007896 -0.001606 0.007597 0.017419
2009-02-23 -0.015349 -0.002748 -0.007760 0.010237 0.004150 0.011192
C
time 11:00:00 12:00:00 13:00:00
date
2009-02-20 -0.000150 -0.000054 -0.000241
2009-02-23 -0.000328 -0.000070 -0.000270
您可以从列中删除Multiindex
:
df['time'] = df['Time'].dt.strftime('%H:%M')
df['date'] = df['Time'].dt.date
df = pd.pivot_table(df, index='date', columns='time')
df.columns = ['_'.join(col) for col in df.columns]
print df
A_11:00 A_12:00 A_13:00 B_11:00 B_12:00 B_13:00 \
date
2009-02-20 -0.003776 -0.004145 -0.007896 -0.001606 0.007597 0.017419
2009-02-23 -0.015349 -0.002748 -0.007760 0.010237 0.004150 0.011192
C_11:00 C_12:00 C_13:00
date
2009-02-20 -0.000150 -0.000054 -0.000241
2009-02-23 -0.000328 -0.000070 -0.000270