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

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

Panda 的左合并:結果表有更多行,防止重復

Panda 的左合并:結果表有更多行,防止重復

慕森王 2021-06-03 13:33:39
我有 2 個數據框。df1 有 39780 行,df2 有 8900454 行我要合并的 df1 列: ['postalcode','housenumber', 'suffix'] “后綴”列包含一些 NAN。df2 列:['postalcode_right','housenumber_right', 'suffix_right', 'index_right'](名為“index_right”的列不是該數據框的索引。)df2 = pd.merge(df1, df2,  how='left', left_on=['postalcode','housenumber', 'suffix'], right_on = ['postalcode_right','housenumber_right', 'suffix_right'])因為 df1.suffix 包含 NAN 右邊的一些行匹配左邊的多行。如何防止這種情況或清除多次匹配的行的“index_right”值?
查看完整描述

1 回答

?
qq_笑_17

TA貢獻1818條經驗 獲得超7個贊

您不應該尋找按空值分組。一方面,從分析的角度來看,這沒有多大意義。


您可以將您的NA值轉換為填充字符串,例如'NULL':


left_cols = ['postalcode', 'housenumber', 'suffix']

right_cols = ['postalcode_right', 'housenumber_right', 'suffix_right']]


df1[left_cols] = df1[left_cols].fillna('NULL')

df2[right_cols] = df2[right_cols].fillna('NULL')

然后right在合并之前刪除數據框中的重復項:


res = pd.merge(df1, df2.drop_duplicates(subset=right_cols), 

               how='left', left_on=left_cols, right_on=right_cols)

這將確保res與df1.


查看完整回答
反對 回復 2021-06-06
  • 1 回答
  • 0 關注
  • 198 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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