首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >重塑数据帧/旋转数据帧的一部分

重塑数据帧/旋转数据帧的一部分
EN

Stack Overflow用户
提问于 2017-04-26 17:36:05
回答 2查看 132关注 0票数 1

我有个关于重塑数据的问题。在以下示例中:

代码语言:javascript
运行
复制
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']})

给出以下数据。

代码语言:javascript
运行
复制
  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’,而不是“类别”列。我想得到以下输出。

代码语言:javascript
运行
复制
  kind    name  x  y  year
0    M  Alfred -3  4  2016
1    D  Arnaud -2  4  2017
2    M  Agrest -6  7  2017
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-26 18:11:18

试一试

代码语言:javascript
运行
复制
df.set_index(['name', 'year', 'kind', 'category']).unstack().reset_index()

你会得到

代码语言:javascript
运行
复制
    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
票数 4
EN

Stack Overflow用户

发布于 2017-04-26 18:15:55

阿扎兹的答案当然有效,但可能有点神秘。这里有一个选择:

代码语言:javascript
运行
复制
df.pivot_table(values='values',index=['kind','name','year'],columns='category').reset_index()

或者甚至没有.reset_index(),这取决于你想要什么。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43640999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档