我有一个关于 reshape 数据框的问题。在下面的例子中:
df = pd.DataFrame({'name': ['Alfred', 'Alfred', 'Arnaud', 'Arnaud', 'Agrest', 'Agrest'],
'year': [2016, 2016, 2017, 2017, 2017, 2017],
'category': ['x', 'y', 'x', 'y', 'x', 'y'],
'values': [-3, 4,-2, 4,-6,7],
'kind': ['M', 'M', 'D', 'D', 'M', 'M']})
给出以下数据框。
category kind name values year
0 x M Alfred -3 2016
1 y M Alfred 4 2016
2 x D Arnaud -2 2017
3 y D Arnaud 4 2017
4 x M Agrest -6 2017
5 y M Agrest 7 2017
请注意,对于“名称”、“种类”和“年份”的每种组合,我们在“类别”列中都有一个“x”和一个“y”,并且在“值”列中有它们对应的值。
我如何 reshape 数据框,以便我有两个不同的列而不是“类别”列,一个标记为“x”,另一个标记为“y”。我想获得以下输出。
kind name x y year
0 M Alfred -3 4 2016
1 D Arnaud -2 4 2017
2 M Agrest -6 7 2017
请您参考如下方法:
尝试
df.set_index(['name', 'year', 'kind', 'category']).unstack().reset_index()
你得到
name year kind values
category x y
0 Agrest 2017 M -6 7
1 Alfred 2016 M -3 4
2 Arnaud 2017 D -2 4
