У меня есть 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. Я планирую сохранить этот результат в столбце E как df2 ['E'] = результат

В основном функция сумкс в DAX

1
Neil S 2 Май 2019 в 06:04

3 ответа

Лучший ответ

Это то, что тебе надо ?

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
2
YO and BEN_W 2 Май 2019 в 03:11

Другой способ - использовать 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
1
Andy L. 2 Май 2019 в 08:18

Попробуйте использовать метод DataFrame.merge()

df_merged = df1.merge(df2, left_on='A', right_on='C')
result = df_merged['B'].sum()  # 110
df2['E'] = result
1
hylowaker 2 Май 2019 в 03:16