Pandas合并DataFrame时保留首表全量行并去重重复索引行的方法
实现方案
核心思路
- 先对df2做索引过滤,仅保留索引没有出现在df1索引中的行
- 再直接拼接df1和过滤后的df2即可
代码实现
import pandas as pd # 示例数据构造,实际使用时替换为你自己的df1、df2即可 df1 = pd.DataFrame({'A': ['a', 'b', 'c'], 'B': [3,4,0]}, index=['id0', 'id1', 'id2']) df2 = pd.DataFrame({'A': ['aa', 'd', 'r'], 'B': [80,44,100]}, index=['id2', 'id3', 'id4']) # 核心处理逻辑 # 过滤掉df2中与df1索引重复的行 df2_filtered = df2[~df2.index.isin(df1.index)] # 拼接两个DataFrame得到最终结果 result = pd.concat([df1, df2_filtered])
逻辑说明
df2.index.isin(df1.index)会返回布尔序列,标记df2的索引是否在df1的索引中存在- 符号
~代表取反,最终筛选出df2中索引未在df1出现过的行 pd.concat按传入顺序拼接两个DataFrame,会完整保留df1的所有行和原有值,不会出现索引冲突覆盖的问题
内容的提问来源于stack exchange,提问作者vvv
相关产品推荐
相关产品推荐

