2017-03-04 6 views
0

私は今、このようにパンダのデータフレームを持っている:数値列が一日で `時間」を意味するので、私はこれにそれを変更したい 、変更パンダDATAFRAME

Month Day class 0 1 2 3 4 5 ... 22 23 


1  1 A  12 8 9 1 12 3 ... 14 13 
1  1 B  0 1 2 3 6 6 ... 3 2 
1  2 A  12 10 9 8 7 8 ... 6 7 
1  2 B  ... some values 

Month Day Hours A B 
1  1  1 12 0 
1  1  2 8 1 
1  1  3 9 2 
... 
1  1  23 13 2 
1  2  1 12 .. 

私はこれを行うことができますどのように

答えて

0

あなたはSeries.unstackDataFrame.stackを使用することができます。

print (df) 
    Month Day class 0 1 2 3 4 5 22 23 
0  1 1  A 12 8 9 1 12 3 14 13 
1  1 1  B 0 1 2 3 6 6 3 2 
2  1 2  A 12 10 9 8 7 8 6 7 
3  1 2  B 12 10 9 8 7 8 6 7 

df = df.set_index(['Month','Day','class']).stack().unstack(2).reset_index() 
df = df.rename(columns={'level_2':'Hours'}) 
df.columns.name=None 
print (df) 
    Month Day Hours A B 
0  1 1  0 12 0 
1  1 1  1 8 1 
2  1 1  2 9 2 
3  1 1  3 1 3 
4  1 1  4 12 6 
5  1 1  5 3 6 
6  1 1 22 14 3 
7  1 1 23 13 2 
8  1 2  0 12 12 
9  1 2  1 10 10 
10  1 2  2 9 9 
11  1 2  3 8 8 
12  1 2  4 7 7 
13  1 2  5 8 8 
14  1 2 22 6 6 
15  1 2 23 7 7