gpt4 book ai didi

Python:将一个数据框的值添加到另一个数据框的某些行

转载 作者:太空宇宙 更新时间:2023-11-03 15:39:28 25 4
gpt4 key购买 nike

我有一个数据框 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 中的每个“伙伴”分配与 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,这是阿富汗和英国之间的弥补距离,但所有其他国家/地区都获得了相同的值(有些国家甚至根本不应该获得任何值)

最佳答案

您可以使用 IIUC .map

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'].map(df2.set_index('country')['distance'])

print (df1)

partner trade_value distance
0 Afghanistan 100 1000.0
1 Zambia 110 NaN
2 Germany 120 NaN
3 Afghanistan 150 1000.0
4 USA 1120 1120.0

关于Python:将一个数据框的值添加到另一个数据框的某些行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53438230/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com