首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从pandas DataFrame中“取消透视”特定的列?

如何从pandas DataFrame中“取消透视”特定的列?
EN

Stack Overflow用户
提问于 2014-04-29 09:48:26
回答 1查看 27.6K关注 0票数 33

我有一个熊猫DataFrame,例如:

代码语言:javascript
复制
x = DataFrame.from_dict({'farm' : ['A','B','A','B'], 
                         'fruit':['apple','apple','pear','pear'], 
                         '2014':[10,12,6,8], 
                         '2015':[11,13,7,9]})

即:

代码语言:javascript
复制
   2014  2015 farm  fruit
0    10    11    A  apple
1    12    13    B  apple
2     6     7    A   pear
3     8     9    B   pear

如何将其转换为:?

代码语言:javascript
复制
  farm  fruit  value  year
0    A  apple     10  2014
1    B  apple     12  2014
2    A   pear      6  2014
3    B   pear      8  2014
4    A  apple     11  2015
5    B  apple     13  2015
6    A   pear      7  2015
7    B   pear      9  2015

我试过stackunstack,但没能让它工作。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-29 10:05:49

这可以使用pd.melt()来完成

代码语言:javascript
复制
# value_name is 'value' by default, but setting it here to make it clear
pd.melt(x, id_vars=['farm', 'fruit'], var_name='year', value_name='value')

结果:

代码语言:javascript
复制
  farm  fruit  year  value
0    A  apple  2014     10
1    B  apple  2014     12
2    A   pear  2014      6
3    B   pear  2014      8
4    A  apple  2015     11
5    B  apple  2015     13
6    A   pear  2015      7
7    B   pear  2015      9

[8 rows x 4 columns]

我不确定“熔化”作为这种操作的名称有多常见,但这就是R的reshape2包中的名称,可能是它启发了这里的名称。

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

https://stackoverflow.com/questions/23354124

复制
相关文章

相似问题

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