亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 572 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號