为了账号安全,请及时绑定邮箱和手机立即绑定

Pandas-使用来自另一个DF的值更新/替换列中的值(基于2个匹配的列)

Pandas-使用来自另一个DF的值更新/替换列中的值(基于2个匹配的列)

素胚勾勒不出你 2021-04-30 10:09:52
我有一个主df栏,其中一栏我想用第二栏的值进行更新df1。对我来说,最棘手的部分是我需要从每个df匹配2个公共列,才能知道要更新哪个值。使用示例:df  col1  col2 col31    1A    Z4   42    1B    Z5   23    1C    Z6   74    1D    Z7   15    1E    Z12  9df1  col1  col2 col31    1G    Z9   12    1B    Z5   23    1C    Z6   34    1D    Z7   45    1E    Z8   5输出:df  col1  col2 col31    1A    Z4   4 (no match, no update)2    1B    Z5   2 (match, updated)3    1C    Z6   3 (match, updated)4    1D    Z7   4 (match, updated)5    1E    Z12  9 (not matched on both, no update)谢谢您的帮助。
查看完整描述

2 回答

?
浮云间

TA贡献1829条经验 获得超4个赞

你可以用set_index与update


df1=df1.set_index(['col1','col2'])

df1.update(df2.set_index(['col1','col2']))

df1.reset_index(inplace=True)

df1

Out[528]: 

  col1 col2  col3

0   1A   Z4   4.0

1   1B   Z5   2.0

2   1C   Z6   3.0

3   1D   Z7   4.0

4   1E  Z12   9.0


查看完整回答
反对 回复 2021-05-11
?
呼唤远方

TA贡献1856条经验 获得超11个赞

通过numpy.where与我从@jezrael的解决方案中找到的三元运算符一起使用。

df['col3'] = np.where(df['col1'].isin(df1['col1']) & df['col2'].isin(df1['col2']), df1['col3'], df['col3'])



查看完整回答
反对 回复 2021-05-11
  • 2 回答
  • 0 关注
  • 527 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信