首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将一些列设为虚拟并移动值为pandas

将一些列设为虚拟并移动值为pandas
EN

Stack Overflow用户
提问于 2021-08-06 13:03:14
回答 1查看 58关注 0票数 1

我有以下每个员工的福利数据框架。有3列用于添加员工福利,但福利本身没有确切的要放置的列。这就是数据帧:

代码语言:javascript
复制
  Country Employee Name         Benefit 1   Total 1         Benefit 2  Total 2  \
0      PT    Employee 1  Health Insurance  1000.0     Car allowance   1500.0   
1      PT    Employee 2  Health Insurance  1000.0               NaN      NaN   
2      PT    Employee 3  Health Insurance  1500.0               NaN      NaN   
3      DK    Employee 4               NaN     NaN  Health Insurance   1000.0   
4      DK    Employee 5               NaN     NaN   Study Allowance   2000.0   
5      DK    Employee 6               NaN     NaN               NaN      NaN   
6      CZ    Employee 7               NaN     NaN               NaN      NaN   
7      CZ    Employee 8     Car allowance  1000.0               NaN      NaN   
8      CZ    Employee 9               NaN     NaN    Food Allowance    500.0   
9      CZ   Employee 10               NaN     NaN               NaN      NaN   

        Benefit 3  Total 3 
0  Food Allowance    500.0  
1             NaN      NaN  
2             NaN      NaN  
3             NaN      NaN  
4             NaN      NaN  
5             NaN      NaN  
6             NaN      NaN  
7             NaN      NaN  
8   Car allowance   1500.0  
9             NaN      NaN

我需要将福利1、2和3的唯一值作为列标题,然后在正确的列中添加福利的总和。例如,它看起来像这样:

代码语言:javascript
复制
  Country Employee Name  Health Insurance  Food Allowance  Car Allowance  \
0      PT    Employee 1            1000.0           500.0         1500.0   
1      PT    Employee 2             100.0             NaN            NaN   
2      PT    Employee 3            1500.0             NaN            NaN   
3      DK    Employee 4            1000.0             NaN            NaN   
4      DK    Employee 5               NaN             NaN            NaN   
5      DK    Employee 6               NaN             NaN            NaN   
6      CZ    Employee 7               NaN             NaN            NaN   
7      CZ    Employee 8               NaN             NaN         1000.0   
8      CZ    Employee 9               NaN           500.0         1500.0   

   Study Allowance  
0              NaN  
1              NaN  
2              NaN  
3              NaN  
4           2000.0  
5              NaN  
6              NaN  
7              NaN  
8              NaN

考虑到福利的独特价值是未知的,最好的方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-06 13:40:10

让我们尝试wide_to_long()+pivot_table()和几种清理方法:

代码语言:javascript
复制
out=(pd.wide_to_long(df,['Benefit','Total'],['Country','Employee Name'],'drop',sep=' ')
       .reset_index()
       .pivot_table('Total',['Country','Employee Name'],'Benefit')
       .reset_index()
       .rename_axis(columns=None))

现在,如果您打印out,您将获得所需的输出

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

https://stackoverflow.com/questions/68682035

复制
相关文章

相似问题

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