首页 > 解决方案 > 如何根据其他数据框列替换熊猫列值

问题描述

我有2个熊猫数据框如下

df1:-

 col1   col2 col3 
   aa      b   c
   aa      d   c
   bb      d   t
   bb      b   g
   cc      e   c
   dd      g   c

和第二个数据框:-

 col1  col2 
  aa    b
  cc    e
  bb    d

我想将dataframe1的col3的值更改为'cc'。如下所示。基于第二个数据框列 col1 和 col2。

 col1   col2 col3 
   aa      b   cc
   aa      d   c
   bb      d   cc
   bb      b   g
   cc      e   cc
   dd      g   c

简而言之,我想将第二个数据帧列(col1,col2)与第一个数据帧的列(col1,col2)映射并更改它匹配的第一个数据帧的列(col3)。

标签: python-3.xpandas

解决方案


用于DataFrame.merge辅助列的左连接和指示符参数,比较Series.eqfor ==withboth和 last set values in DataFrame.loc

m = df1.merge(df2, on=['col1','col2'],indicator=True, how='left')['_merge'].eq('both')

df1.loc[m, 'col3'] = 'cc'
print (df1)
  col1 col2 col3
0   aa    b   cc
1   aa    d    c
2   bb    d   cc
3   bb    b    g
4   cc    e   cc
5   dd    g    c

推荐阅读