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

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 关注
  • 177 浏览
慕课专栏
更多

添加回答

举报

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