我有一个像
这样的数据框 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
任何想法如何在不编写繁琐功能的情况下干净地拆分数据框?
干杯,迈克
答案 0 :(得分:3)
我无法证实这一点,但它应该是
df.set_index(['age', 'sex'], append=True)['values'].unstack().reset_index('age')
答案 1 :(得分:1)
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