重塑&从Pivot中选择Pandas

时间:2015-02-20 05:42:06

标签: python pandas pivot multiple-columns

问题

我有以下数据框(注意值只是为了显示格式):

>>> print df
           Country  Public Private
Date                              
2013-01-17      BE            3389
2013-01-17      DK    4532     681
2013-02-21      DE    2453    1752
2013-02-21      IE            5143
2013-02-21      ES    8633     353
2013-03-21      FR             262
2013-03-21      LT             358

我想将其展开以显示以下格式:

Country        Country1          Country2        
           Private  Public   Private  Public                                  
Date                                                           
2013-01-17     681     353       262   5143 
2013-02-21     149     176       124   1757 
2013-03-21     149     176       124   1757

生成问题

这会产生问题

import pandas as pd

data =[['2013-01-17',  'BE',1000,3389],
    ['2013-01-17',  'IE',5823, 681],
    ['2013-01-17',  'FR',1000,1752],
    ['2013-02-17',  'IE',1000,5143],
    ['2013-02-17',  'FR',1000, 353],
    ['2013-03-17',  'FR',1000, 262],
    ['2013-03-17',  'BE',1000, 358]]

df = pd.DataFrame(data,columns=['Date','Country','Public','Private']).set_index('Date')

的尝试

我能管理的最好的方法是使国家和数据描述错误的方式:

>>> print df.pivot(index=df.index,columns='Country').fillna('')
           Public        Private
Country        AT    BE       DE    DK 
Date                                
2013-01-17   1000  1000     1000  1000
2013-02-21   1000  1000     1000  1000
2013-03-21   1000  1000     1000  1000

1 个答案:

答案 0 :(得分:1)

您可以使用交换级别来交换它们。 http://pandas.pydata.org/pandas-docs/dev/generated/pandas.DataFrame.swaplevel.html

df.pivot(index = df.index,columns ='Country')。fillna('')。swaplevel(0,1,axis = 1).sortlevel(axis = 1)