У меня есть фрейм данных df1
, который содержит строки для тысяч сделок между определенной страной и Великобританией.У меня также есть другой фрейм данных df2
, который содержит несколько строк для расстояний между определенными странами и Великобританией.
Пример:
x1 = [{'partner': "Afghanistan", 'trade_value':100},
{'partner':"Zambia",'trade_value':110},
{'partner': "Germany",'trade_value':120},
{'partner': "Afghanistan",'trade_value':150},
{'partner': "USA",'trade_value':1120}]
df1 = pd.DataFrame(x1)
x2 = [{'country': "Afghanistan", 'distance':1000},
{'country': "USA",'distance':1120}];
df2 = pd.DataFrame(x2)
Я хочу добавить новый столбец к df1
называется «расстояние» и присваивает каждому «партнеру» в df1
соответствующее ему «расстояние» от df2
.
Примечание: иногда «партнерская» страна в df1
повторяется из-за нескольких сделок,Также не все расстояния доступны в df2
, поэтому я не против оставить ячейку в df1 пустой.
Пока я пытаюсь это безрезультатно:
#Add new column
df1['distance'] = 0;
for index, row in df1.iterrows():
for index, row2 in df2.iterrows():
if row['partner'] == row2['country']:
df1['distance'].replace(row['distance'], row2['distance'],inplace=True);
Яполучая всю колонку расстояний, заполненную 1000, что составляет выровненное расстояние между Афганистаном и Великобританией, но все другие страны получают одинаковое значение (когда некоторые страны вообще не должны получать никакого значения)