我有以下每个员工的福利数据框架。有3列用于添加员工福利,但福利本身没有确切的要放置的列。这就是数据帧:
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的唯一值作为列标题,然后在正确的列中添加福利的总和。例如,它看起来像这样:
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考虑到福利的独特价值是未知的,最好的方法是什么?
发布于 2021-08-06 13:40:10
让我们尝试wide_to_long()+pivot_table()和几种清理方法:
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,您将获得所需的输出
https://stackoverflow.com/questions/68682035
复制相似问题