匹配和求和2个数据帧中具有不相等行的列

时间:2019-05-02 03:04:05

标签: python pandas

我有2个df,其中A,B和C,D列 我想比较A和C的值,并在有匹配的地方添加B的值。 例如

df1 = pd.DataFrame([['a', 23], ['b', 53], ['c', 23], ['d', 12], ['e', 34]], columns=['A', 'B'])
df2 = pd.DataFrame([['c', 1], ['e', 1], ['b', 1]], columns=['C', 'D'])

此处c,e和b匹配。

我的结果应该是23 + 34 + 53 = 110。我打算将此结果存储在col E中,为df2 ['E'] = result

基本上是DAX中的sumx函数

3 个答案:

答案 0 :(得分:2)

这是您需要的吗?

df2['E']=df1.loc[df1.A.isin(df2.C),'B'].sum()
df2
Out[377]: 
   C  D    E
0  c  1  110
1  e  1  110
2  b  1  110

答案 1 :(得分:1)

尝试使用DataFrame.merge()方法

df_merged = df1.merge(df2, left_on='A', right_on='C')
result = df_merged['B'].sum()  # 110
df2['E'] = result

答案 2 :(得分:1)

另一种方法是使用系列的map

df2['E'] = df2['C'].map(df1.set_index('A')['B']).sum()

In [64]: df2
Out[64]:
   C  D    E
0  c  1  110
1  e  1  110
2  b  1  110