Ad *_*d D 2 python sum dataframe pandas
我试图找出如何做到这一点:
我想在 df2 中为 df2 列“agence”中的每个字符串列表创建来自 df1 的所有“值”整数的总和,以创建“总和”。
我的实际代理列表是 300+,所以我正在寻找不需要为每个代理名称手动重复的内容。
编辑:对不起,我想添加图片来说明我的问题,因为我很难表达它,但我还应该在下面添加可重现的示例数据框:
import pandas as pd
df1 = pd.DataFrame({'agence': ['a', 'a, b', 'c, d, a', 'd', 'e, a', 'b, d'],
'value': [1, 4, 2, 5, 2, 10]})
df2 = pd.DataFrame({'agence': ['a', 'b', 'c', 'd', 'e',]})
Run Code Online (Sandbox Code Playgroud)
使用str.split()和explode()扩展数据。然后使用groupby()和sum()聚合重新组合:
df2 = (df1.assign(agence=df1['agence'].str.split(', '))
.explode('agence')
.groupby('agence')
.sum()
.reset_index()
.rename(columns=({'value': 'total sum'})))
Run Code Online (Sandbox Code Playgroud)
df2
agence total sum
0 a 9
1 b 14
2 c 2
3 d 17
4 e 2
Run Code Online (Sandbox Code Playgroud)