2017-08-26 17 views
2

I次のデータフレームを持っている:整形私のパンダはDATAFRAME

Month  AAPL  GOOG   IBM 
0 Jan 117.160004 534.522445 153.309998 
1 Feb 128.460007 558.402511 161.940002 
2 Mar 124.430000 548.002468 160.500000 
3 Apr 125.150002 537.340027 171.289993 
4 May 130.279999 532.109985 169.649994 

私が溶融し、ピボットの周りいじるしてきたが、しかし見当がつかない:私は次のように変換したい

name  Jan  Feb  Mar  Apr  May  Jun  Jul  Aug \ 
0  IBM 156.08 160.01 159.81 165.22 172.25 167.15 164.75 152.77 
1 MSFT 45.51 43.08 42.13 43.47 47.53 45.96 45.61 45.51 
2 GOOGLE 512.42 537.99 559.72 540.50 535.24 532.92 590.09 636.84 
3 APPLE 110.64 125.43 125.97 127.29 128.76 127.81 125.34 113.39 

     Sep  Oct  Nov  Dec 
0 145.36 146.11 137.21 137.96 
1 43.56 48.70 53.88 55.40 
2 617.93 663.59 735.39 755.35 
3 112.80 113.36 118.16 111.73 

これをどのように機能させるか。 アドバイスをいただければ幸いです。

おかげ転置のための

答えて

2

レッツ・使用 'set_index'、 'rename_axis'、およびT。

df.set_index('name')\ 
    .rename_axis(None).T\ 
    .rename_axis('Month')\ 
    .reset_index() 

出力:

Month  IBM MSFT GOOGLE APPLE 
0 Jan 156.08 45.51 512.42 110.64 
1 Feb 160.01 43.08 537.99 125.43 
2 Mar 159.81 42.13 559.72 125.97 
3 Apr 165.22 43.47 540.50 127.29 
4 May 172.25 47.53 535.24 128.76 
5 Jun 167.15 45.96 532.92 127.81 
6 Jul 164.75 45.61 590.09 125.34 
7 Aug 152.77 45.51 636.84 113.39 
-1

Set_indexは基本的には、グループの名前にset_index場合、これはあなたの問題を解決する必要がありますので、自分で指定したインデックスに基づいて要素やグループのデータでグループを変更します。

1

創造的な方法

pd.DataFrame({'Month': df.columns[1:]}).assign(**{c: v for c, *v in df.values}) 

    Month APPLE GOOGLE  IBM MSFT 
0 Jan 110.64 512.42 156.08 45.51 
1 Feb 125.43 537.99 160.01 43.08 
2 Mar 125.97 559.72 159.81 42.13 
3 Apr 127.29 540.50 165.22 43.47 
4 May 128.76 535.24 172.25 47.53 
5 Jun 127.81 532.92 167.15 45.96 
6 Jul 125.34 590.09 164.75 45.61 
7 Aug 113.39 636.84 152.77 45.51 
8 Sep 112.80 617.93 145.36 43.56 
9 Oct 113.36 663.59 146.11 48.70 
10 Nov 118.16 735.39 137.21 53.88 
11 Dec 111.73 755.35 137.96 55.40 
関連する問題