gpt4 book ai didi

Python:如果其他值在 DataFrame 之间匹配,则对 DataFrame 中的值求和

转载 作者:太空宇宙 更新时间:2023-11-04 11:07:36 25 4
gpt4 key购买 nike

我有两个不同长度的数据帧:

数据框A:

FirstName    LastName
Adam Smith
John Johnson

数据框 B:

First        Last        Value
Adam Smith 1.2
Adam Smith 1.5
Adam Smith 3.0
John Johnson 2.5

假设我想要做的是在“DataFrame A”中创建一个新列,对所有具有匹配姓氏的值求和,因此“A”中的输出将是:

FirstName    LastName    Sums
Adam Smith 5.7
John Johnson 2.5

如果我在 Excel 中,我会使用

=SUMIF(dfB!B:B, B2, dfB!C:C)

在 Python 中,我一直在尝试多种解决方案,但同时使用了 np.where、df.sum()、删除索引等,但我迷路了。下面的代码返回“ValueError:只能比较相同标记的系列对象”,但我认为它无论如何都写不正确。

df_a['Sums'] = df_a[df_a['LastName'] == df_b['Last']].sum()['Value']

非常感谢您的帮助。

最佳答案

使用boolean indexingSeries.isin用于过滤然后聚合 sum:

df = (df_b[df_b['Last'].isin(df_a['LastName'])]
.groupby(['First','Last'], as_index=False)['Value']
.sum())

如果要同时匹配名字和姓氏:

df = (df_b.merge(df_a, left_on=['First','Last'], right_on=['FirstName','LastName'])
.groupby(['First','Last'], as_index=False)['Value']
.sum())

关于Python:如果其他值在 DataFrame 之间匹配,则对 DataFrame 中的值求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59068369/

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