如何为Pandas差异DataFrame添加来源标识列(Removed/Added)?
实现方案
核心思路
先给两个DataFrame分别添加来源标记列,再合并后基于原始数据列去重——这样既能保留差异行的来源标识,又不会破坏原有的去重逻辑。
具体代码
- 为原始DataFrame添加标记列(用
copy()避免修改原数据)
# 复制原数据,避免改动原始df1/df2 df1_marked = df1.copy() df1_marked['change_type'] = 'Removed' df2_marked = df2.copy() df2_marked['change_type'] = 'Added'
- 合并并按原始列去重
# 合并带标记的两个DataFrame combined_df = pd.concat([df1_marked, df2_marked]) # 提取所有原始数据列(排除新增的标记列) original_cols = [col for col in combined_df.columns if col != 'change_type'] # 仅基于原始列判断重复,保留完全不重复的差异行 new_dataframe = combined_df.drop_duplicates(subset=original_cols, keep=False)
关键说明
指定subset=original_cols是核心:去重时只会对比原始数据的列,不会把change_type的差异当成行的差异,保证和你之前的去重逻辑完全一致。最终的new_dataframe里,来自df1的行标记为Removed,来自df2的行标记为Added,同时只保留两个表中完全不重复的行。
内容的提问来源于stack exchange,提问作者ijoubert21
相关产品推荐
相关产品推荐

