gpt4 book ai didi

python - 基于来自 pandas/python 中多列的字符串对一列中的值求和

转载 作者:太空宇宙 更新时间:2023-11-03 14:45:07 32 4
gpt4 key购买 nike

我有一个包含 4 列的数据框。其中 3 列包含字符串值(人名),第 4 列包含 int 值(完成工作的薪水)。

字符串值也不是唯一的,相同的字符串会在每一列中出现多次,但每行不会超过一次。

data = {
'worker1': ['Sam', 'Jack', 'Matt', 'Paul', 'Tim'],
'worker2': ['Alex', 'Amy', 'Sam', 'Alice', 'Amanda'],
'worker3': ['Alice', 'Aaron', 'Tony', 'Jack', 'Sam'],
'earnings': [4564552, 4573547, 3567567, 6357653, 7648576]}

df = pd.DataFrame(data, columns = ['worker1', 'worker2', 'worker3', 'earnings'])

print(df)

worker1 worker2 worker3 earnings
'Sam' 'Alex' 'Alice' 4564552
'Jack' 'Amy' 'Aaron' 4573547
'Matt' 'Sam' 'Tony' 3567567
'Paul' 'Alice' 'Jack' 6357653
'Tim' 'Amanda' 'Sam' 7648576

所以我需要的是对与特定名称相关的所有收入求和,无论它是否显示在第 1、2 或 3 列。我不确定是否应该为此使用 groupby 函数,构建字典或去另一条路线。

这就是我想要完成的:

workers    total_earnings
Sam 16080695
Alex 4564552
Alice 10922205
Jack 10931200
Amy 4573547
Aaron 4573547
Matt 3567567
Tony 3567567
Paul 6357653
Tim 7648576
Amanda 7648576

我对 pandas 很陌生,所以我不熟悉我可以使用哪些函数来做这样的事情。我主要尝试使用 groupby 函数,但那是一场灾难。

如有任何帮助,我们将不胜感激。

最佳答案

有点长,但做你想做的:

>>> df1 = pd.concat([df.groupby('worker1').sum(), df.groupby('worker2').sum(), df.groupby('worker3').sum()])
>>> df1.groupby(df1.index).sum()
earnings
Aaron 4573547
Alex 4564552
Alice 10922205
Amanda 7648576
Amy 4573547
Jack 10931200
Matt 3567567
Paul 6357653
Sam 15780695
Tim 7648576
Tony 3567567

关于python - 基于来自 pandas/python 中多列的字符串对一列中的值求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50170814/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com