Groupby /重塑大熊猫中的数据

时间:2016-05-04 14:00:24

标签: python pandas

我正在寻找一种将数据转换为不同形状的方法。 现在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文档,但无法找到这样做的方式。

1 个答案:

答案 0 :(得分:1)

我认为您可以将pivot_tabledt.datedt.timedt.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