我有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函数
答案 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