python - Pandas - 在数据帧之间查找值并为匹配的系列添加值

标签 python pandas

我正在尝试在 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/

相关文章:

python - theano T.switch() : if tensor is empty strange behaviour

python - 如何一次操纵一行?

python - Django不会在try except语句中重定向到404

python - 在控制台中打印,但在格式化为 CSV 时不打印

python - 如何在 Pandas 中将byby()。transform()转换为value_counts()?

Python 日志记录 : Specifying converter attribute of a log formatter in config file

python - 为 pandas 列创建类别计数字典

python - 为每个文件分别创建一个新的 txt 文件,其中包含输出和输入文件的大小信息

python - 将列名分配给 Series.str.extract() 的输出

python - 从行到列构建数据集 pandas python