繁体   English   中英

根据条件使用另一个数据帧列值更新一个数据帧值

[英]Update one dataframe value with another dataframe column value based on the condition

我有两个数据帧说df1df2

df1:

id code remarks
1   a12  
2   b32  
3   c12

df2:

id code remarks
1   aaa12  ok
2   b32    done
3   ccc12  not ok

我想根据idcodedf2备注值更新df1备注值。

这里第二个值匹配( id-2 , code-b32 ),所以用df1 remarks列更新备注'done'的值。

df1最终结果如下所示,

df1:

id code remarks
1   a12  
2   b32  done
3   c12

到目前为止,我尝试如下,我知道这是不正确的,但我需要这样的东西

df1_key = df1['id'].astype(str) + df1['code'].astype(str)
df2_key = df2['id'].astype(str) + df2['code'].astype(str)

df['flag'] = df1_key.isin(df2_key, df1['remarks']=df2['remarks'])

根据这个,我也尝试了以下,但没有为我工作。

 df3 = df1.merge(df2[['remarks']], on=['id','code'], how='left')

按列表使用DataFrame.merge和筛选的列:

df3 = df1[['id','code']].merge(df2, on=['id','code'], how='left')

或者通过DataFrame.drop

df3 = df1.drop('remarks', axis=1).merge(df2, on=['id','code'], how='left')

print (df3)
   id code remarks
0   1  a12     NaN
1   2  b32    done
2   3  c12     NaN

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM