2016-06-18 29 views
3

我現在的數據幀是這樣的:我想在熊貓中更改DataFrame的格式。我怎樣才能做到這一點?

In [40]: result 
Out[40]: 
    monthyear Facility  Date  Yield Planned 
0 Dec 15  CCM2 2015-12-01 2550.000000  0.0 
1 Feb 16  CCM2 2016-02-01 4250.000000  0.0 
2 Jan 16  CCM1 2016-01-01 1540.000000  0.0 
3 Jan 16  CCM2 2016-01-01 6800.000000  0.0 
4 Nov 15  CCM1 2015-11-01 921.458157 880.0 
5 Nov 15  CCM2 2015-11-01 1750.310038 3000.0 
6 Sep 15  CCM2 2015-09-01 5191.197065 8000.0 

我需要它的格式更改爲以下:

  monthyear  Date   CCM1   CCM2  Planned 
0   Dec 15 2015-12-01  0.000000 2550.000000   0.0 
1   Feb 16 2016-02-01  0.000000 4250.000000   0.0 
2   Jan 16 2016-01-01 1540.000000 6800.000000   0.0 
3   Nov 15 2015-11-01 921.458157 1750.310038  3880.0 
4   Sep 15 2015-09-01  0.000000 5191.197065  8000.0 

我怎樣才能做到這一點?提前致謝。

+0

感謝您的編輯。 @Merlin –

回答

4

使用pivot_table,然後通過groupbyindex聚集sum

df1 = (df.pivot_table(index=['monthyear','Date','Planned'], 
         columns='Facility', 
         values='Yield', 
         fill_value=0).reset_index(level=2)) 
print (df1) 

Facility    Planned   CCM1   CCM2 
monthyear Date           
Dec 15 2015-12-01  0.0  0.000000 2550.000000 
Feb 16 2016-02-01  0.0  0.000000 4250.000000 
Jan 16 2016-01-01  0.0 1540.000000 6800.000000 
Nov 15 2015-11-01 880.0 921.458157  0.000000 
      2015-11-01 3000.0  0.000000 1750.310038 
Sep 15 2015-09-01 8000.0  0.000000 5191.197065 

print (df1.groupby(level=[0,1]).sum()) 

Facility    Planned   CCM1   CCM2 
monthyear Date           
Dec 15 2015-12-01  0.0  0.000000 2550.000000 
Feb 16 2016-02-01  0.0  0.000000 4250.000000 
Jan 16 2016-01-01  0.0 1540.000000 6800.000000 
Nov 15 2015-11-01 3880.0 921.458157 1750.310038 
Sep 15 2015-09-01 8000.0  0.000000 5191.197065 

最後使用rename_axis(新中pandas0.18.0):

print (df1.groupby(level=[0,1]).sum().reset_index().rename_axis(None, axis=1)) 
    monthyear  Date Planned   CCM1   CCM2 
0 Dec 15 2015-12-01  0.0  0.000000 2550.000000 
1 Feb 16 2016-02-01  0.0  0.000000 4250.000000 
2 Jan 16 2016-01-01  0.0 1540.000000 6800.000000 
3 Nov 15 2015-11-01 3880.0 921.458157 1750.310038 
4 Sep 15 2015-09-01 8000.0  0.000000 5191.197065 
+0

非常感謝您的快速解決方案... @jezrael –

+0

很高興能爲您提供幫助!美好的一天 – jezrael

相關問題