我有一个名为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
中添加一个名为“distance”的新列,并将df1
中的每个“partner”与其在df2
中相应的“distance”进行匹配。注意:由于多次贸易,
df1
中的某些“partner”国家可能会重复。此外,并非所有距离都在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,这是阿富汗和英国之间虚构的距离,但其他一些国家也得到了相同的值(有些国家甚至不应该得到任何值)。
map
相对于其他替代方案运行速度更快。 - Abhi