首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >长/宽数据到宽/长数据

长/宽数据到宽/长数据
EN

Stack Overflow用户
提问于 2018-09-27 10:06:22
回答 1查看 189关注 0票数 6

我有一个如下的数据框架:

代码语言:javascript
复制
import pandas as pd
d = {'decil': ['1. decil','1. decil','2. decil','2. decil','3. decil','3. decil'],
    'kommune': ['AA','BB','AA','BB','AA','BB'],'2010':[44,25,242,423,845,962],
    '2011':[64,26,239,620,862,862]}    
df = pd.DataFrame(data=d)

打印

代码语言:javascript
复制
decil      kommune  2010  2011
1. decil   AA       44    64
1. decil   BB       25    26
2. decil   AA      242   239
2. decil   BB      423   620
3. decil   AA      845   862
3. decil   BB      962   862

我想要的输出如下所示

代码语言:javascript
复制
 kommune  year  1. decil  2. decil  3. decil
 AA       2010        44       242       845
 AA       2011        64       239       862
 BB       2010        25       423       962
 BB       2011        25       620       862

也就是说,我正在寻找一种方法,将“decil”列从长格式更改为宽格式,同时将年份列从宽格式更改为长格式。我已经尝试过pd.pivot_table,循环和堆栈,没有任何运气。有什么明智的办法吗?提前,谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-27 10:08:49

set_indexstackunstack结合使用

代码语言:javascript
复制
df = (df.set_index(['decil','kommune'])
        .stack()
        .unstack(0)
        .reset_index()
        .rename_axis(None, axis=1))

print (df)
  kommune level_1  1. decil  2. decil  3. decil
0      AA    2010        44       242       845
1      AA    2011        64       239       862
2      BB    2010        25       423       962
3      BB    2011        26       620       862
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52534500

复制
相关文章

相似问题

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