Вы можете использовать map
в этом случае:
df['diff'] = df['ID'].map(df2.set_index('ID').Quantity) - df.Quantity
Некоторые данные
import pandas as pd
df = pd.DataFrame({'Title': ['A', 'B', 'C', 'D', 'E'],
'Name': ['AA', 'BB', 'CC', 'DD', 'EE'],
'Quantity': [1, 21, 14, 15, 611],
'ID': ['A1', 'A1', 'B2', 'B2', 'C1']})
df2 = pd.DataFrame({'Quantity': [11, 51, 44],
'ID': ['A1', 'B2', 'C1']})
Мы будем использовать df2
для создания словаря, который можно использоватьсопоставить ID
с Quantity
.Таким образом, везде, где есть ID==A1
в df
, ему присваивается количество 11, B2
- 51, а C1
- 44. Здесь «я добавлю его в качестве другого столбца только для иллюстрации.
df['Quantity2'] = df['ID'].map(df2.set_index('ID').Quantity)
print(df)
ID Name Quantity Title Quantity2
0 A1 AA 1 A 11
1 A1 BB 21 B 11
2 B2 CC 14 C 51
3 B2 DD 15 D 51
4 C1 EE 611 E 44
Name: ID, dtype: int64
Тогда вы можете просто вычесть df['Quantity']
и столбец, который мы только что создали, чтобы получить разницу.(Или вычтите это из df['Quantity']
, если вы хотите другую разницу)