首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >堆栈数据帧(python)

堆栈数据帧(python)
EN

Stack Overflow用户
提问于 2020-10-09 18:43:00
回答 2查看 63关注 0票数 2

我试图通过使用函数stack()在python中堆叠数据帧,但有些东西不能正常工作。

我的数据帧结构如下:

代码语言:javascript
复制
>              BE       BG       CZ      ...
> AT_CPA_A02   0.0706   0        0.3879  ... 
> BE_CPA_A02   38.8601  0.0001   0.0233  ...      
> BG_CPA_A02   0        95.2664  0.      ...
>     ...        ...      ...      ...

我要找的是:

代码语言:javascript
复制
>              Country Val.
> AT_CPA_A02   BE      0.0706   
> AT_CPA_A02   BG      0
> AT_CPA_A02   CZ      0.3879
> ...
> BE_CPA_A02   BE      38.8601   
> BE_CPA_A02   BG      0.0001
> BE_CPA_A02   CZ      0.0233 
> ...     

尽管如此,在df = df.stack()中使用函数stack()时,结果是:

代码语言:javascript
复制
>              Country BE.      BG.     CZ
> AT_CPA_A02   BE      0.0706   NA.     NA.
>              BG      NA.      0.      NA.
>              CZ      NA.      NA.     0.3879.   
> ...
> BE_CPA_A02.  BE.     38.8601  NA.     NA. 
>              BG.     NA.      0.0001  NA
>              CZ.     NA.      NA.     0.0233
> ... 

在对一些示例数据使用该函数时,它可以完美地工作……

有人能帮我一下吗?非常感谢你提前

EN

回答 2

Stack Overflow用户

发布于 2020-10-09 18:50:30

一种选择是使用.melt。按照我的做法,您必须先重置索引,然后再重新设置它:

代码语言:javascript
复制
df = df.reset_index().melt(id_vars='index', var_name='Country', value_name='Val.').set_index('index')
df
Out[1]: 
           Country     Val.
index                      
AT_CPA_A02      BE   0.0706
BE_CPA_A02      BE  38.8601
BG_CPA_A02      BE   0.0000
AT_CPA_A02      BG   0.0000
BE_CPA_A02      BG   0.0001
BG_CPA_A02      BG  95.2664
AT_CPA_A02      CZ   0.3879
BE_CPA_A02      CZ   0.0233
BG_CPA_A02      CZ   0.0000
票数 1
EN

Stack Overflow用户

发布于 2020-10-09 19:04:25

你走在了正确的道路上。请尝试:

代码语言:javascript
复制
df.stack().reset_index(level=1).rename(columns={'level_1':'Country',0:'Val' })



            Country      Val
AT_CPA_A02      BE   0.0706
AT_CPA_A02      BG   0.0000
AT_CPA_A02      CZ   0.3879
BE_CPA_A02      BE  38.8601
BE_CPA_A02      BG   0.0001
BE_CPA_A02      CZ   0.0233
BG_CPA_A02      BE   0.0000
BG_CPA_A02      BG  95.2664
BG_CPA_A02      CZ   0.0000
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64278449

复制
相关文章

相似问题

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