在pandas中拆分堆叠的数据帧

时间:2016-09-17 19:33:05

标签: python pandas dataframe

我有一个像

这样的数据框
         age sex      values
time                        
2015      10   F    589628.0
2015      10   M    458390.0
2015      11   F    108018.0
2015      11   M    764350.0
 ....
2000      60   M     34676.0
2000      60   F     45488.0

我想创建像

这样的数据框
         age   F           M
time                        
2015      10   589628.0  458390.0    
2015      11   
 ....
2000      60   45488.0   34676.0

将行减少一半并添加一列。我试图用枢轴做这个,但没有用。

df.pivot(columns='sex', values='values') 

但是会返回

Index contains duplicate entries, cannot reshape

任何想法如何在不编写繁琐功能的情况下干净地拆分数据框?

干杯,迈克

2 个答案:

答案 0 :(得分:3)

我无法证实这一点,但它应该是

df.set_index(['age', 'sex'], append=True)['values'].unstack().reset_index('age')

答案 1 :(得分:1)

使用pivot_tablereset_index

In [17]: df
Out[17]: 
      age sex    values
time                   
2015   10   F  589628.0
2015   10   M  458390.0
2015   11   F  108018.0
2015   11   M  764350.0

In [18]: newdf = df.reset_index().pivot_table('values', ['time', 'age'], 'sex').reset_index()

In [19]: newdf.columns.name = None

In [20]: newdf = newdf.set_index(['time'])

In [21]: newdf
Out[21]: 
      age         F         M
time                         
2015   10  589628.0  458390.0
2015   11  108018.0  764350.0