2016-05-04 5 views
1

私のデータを別の形に変換する方法を探しています。Groupby /パンダのデータを整形する

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 

そして私は私のデータは、日ごとにグループ化したいと思います:次のように は今Data.head()が見えます。私、eは次のようになります。

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

を? – piRSquared

答えて

1

私はあなたがdt.datepivot_tabledt.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