python - 如何对 df1 中与 df2 中的另一个值匹配的值求和

标签 python list pandas sum

如何对 df1 中属于 df2 中另一个值的值求和?

我有一个非常大的 df,但可以说我有一个像这样的 df:

df1:

     A     B        C
0   John  Pen       Apple
1   John  Printer   Pie
2   John  Charger   Burger
3   Erick Battery   Pizza
4   Mandy Keyboard  Bread
5   Mandy Phone     Coffee
6   David Computer  Coke

还有另一个 df:

df2:

     A        B  
0   Pen       2
1   Printer   5
2   Charger   11
3   USB       5
4   Keyboard  8
5   Phone     21
6   Cup       3

还有第三个 df:

df3: 

    A      B
0  Erick  Yes
1  John   Yes
2  David  No 
3  Mandy  Yes
4  Jared  No
5  Lisa   No

我想对 df3 中新列中的匹配值求和

我想要的df:

    A      B   Sum
0  Erick  Yes  
1  John   Yes  18
2  David  No   
3  Mandy  Yes  29
4  Jared  No
5  Lisa   No

我该怎么做?

最佳答案

您可以使用merge :

df = pd.merge(df1, df2, left_on='B', right_on='A', suffixes=('','1'))
df = df.groupby('A', as_index=False)['B1'].sum()
df = pd.merge(df3, df, on='A', how='left').rename(columns={'B1':'Sum'})
#if need remove NaN
df.Sum.fillna('', inplace=True)
print (df)
       A    B Sum
0  Erick  Yes    
1   John  Yes  18
2  David   No    
3  Mandy  Yes  29
4  Jared   No    
5   Lisa   No 

关于python - 如何对 df1 中与 df2 中的另一个值匹配的值求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38211454/

相关文章:

python - 使用 boto3 从 s3 下载时使用文件名作为文件名

python - 最好的方法是计算 python 中列表和字符串之间的匹配次数

python-3.x - python中矩阵中的多个字符替换

python - 将numpy数组转换为2d数组

python - Pandas Statsmodels 使用 DF 预测器进行回归预测?

python - 如何保留字符串中的 '\n 字符?

python - 使用 scikit-learn 和手工计算的 tf-idf 矩阵值的差异

python - 在 tensorflow 中使用一个批量大小?

java - 正确地模板化 List getter 函数

python - 元组列表的自定义排序