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

标签 python pandas dataframe replace row

我有一个数据框 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/

相关文章:

python - 因互相关而滞后?

python - NLTK 每个词最常见的同义词(Wordnet)

python - 如何从 pandas DataFrame 绘制热图

python - 将 Pandas DataFrame 与不同列中的键合并

python - numpy.as_strided 的结果是否取决于输入数据类型?

将中文字符从 Oracle 导入 json.dump 时抛出 Python UnicodeDecodeError

python - 如何将 numpy 矩阵添加为 pandas 数据框的新列?

python - 在 Pandas 中绘制系列直方图

elasticsearch - 如何使用 Pyspark 和 Dataframes 查询 Elasticsearch 索引

html - R : Add CSS color coding in a HTML table