我正在尝试在 DataframeA.IDCol2 中搜索 DataframeB.ColA 的值,然后使用 DataframeA.IDCol1 和 DataframeA.IDCol3 的总和为匹配的值创建一个数据框。
数据框A
IDCol1 IDCol2 IDCol3
0 ABC 123 2
1 ABC 456 5
2 ABC 789 2
3 ABC 1011 1
4 CDE 123 3
5 CDE 456 2
6 CDE CCC 4
7 CDE AAA 1
数据框B
ColA
0 123
1 456
2 CCC
3 1011
输出
Col Sum
0 ABC 8
1 CDE 9
最佳答案
使用DataFrame.merge
先聚合然后聚合sum
:
df = (DataframeA.merge(DataframeB, left_on='IDCol2', right_on='ColA')
.groupby('IDCol1', as_index=False)['IDCol3']
.sum())
print (df)
IDCol1 IDCol3
0 ABC 8
1 CDE 9
另一种解决方案:
s = DataframeB['ColA']
df = DataframeA.set_index('IDCol1').query('IDCol2 in @s')['IDCol3'].sum(level=0).reset_index()
print (df)
IDCol1 IDCol3
0 ABC 8
1 CDE 9
关于python - Pandas - 在数据帧之间查找值并为匹配的系列添加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57005277/