Pandas Join操作产生多余重复项,仅需保留匹配的第一个实例
实现方法
你只需要先对df2做预处理,仅保留每个研究编号索引对应的第一条记录,再和df1关联即可,具体实现有两种常用方式:
方法1:按索引分组取首条
# 预处理df2:按索引分组,保留每组第一条记录 df2_dedup = df2.groupby(level=0).first() # 执行关联,此时不会生成重复行 df1 = df1.join(df2_dedup)
方法2:按索引去重
# 预处理df2:过滤掉重复的索引,保留第一次出现的记录 df2_dedup = df2[~df2.index.duplicated(keep='first')] # 执行关联 df1 = df1.join(df2_dedup)
说明
两种方法处理后的df2都会得到唯一索引的结构,和全量索引的df1关联时为1:1或1:0匹配,既不会生成重复行,也会完整保留df1的所有研究编号记录,未匹配到的Study字段会自动填充为空值NaN。
内容的提问来源于stack exchange,提问作者slicedorange7
相关产品推荐
相关产品推荐

