我有个关于重塑数据的问题。在以下示例中:
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’,以及它们在' values‘列中的相应值。
我怎样才能重塑数据格式,这样我就有了两个不同的列,一个标签为'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
发布于 2017-04-26 18:11:18
试一试
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
发布于 2017-04-26 18:15:55
阿扎兹的答案当然有效,但可能有点神秘。这里有一个选择:
df.pivot_table(values='values',index=['kind','name','year'],columns='category').reset_index()
或者甚至没有.reset_index()
,这取决于你想要什么。
https://stackoverflow.com/questions/43640999
复制相似问题