You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Pandas差异DataFrame添加原数据来源标识列?

为差异数据标记原DataFrame归属

现有两个DataFrame:当前预估数据df_current_est和历史预估数据df_previous_est,各约600行。原代码通过外连接筛选出差异行,但未标记每行所属的原DataFrame,修改方法如下:

修改后的代码

merged_df = pd.merge(df_current_est, df_previous_est, how='outer', indicator=True)
changed_df = merged_df[merged_df['_merge'] != 'both'].copy()

# 新增标记列,映射原DataFrame名称
changed_df['Source'] = changed_df['_merge'].map({
    'left_only': 'df_current_est',
    'right_only': 'df_previous_est'
})

# 清理不必要的列并整理结构
changed_df.drop('_merge', axis=1, inplace=True)
changed_df.reset_index(drop=True, inplace=True)
changed_df = changed_df.sort_values(by='EstimateID', ascending=True)

print(changed_df)

说明

  • pd.merge的indicator=True会自动生成_merge列,其中:
    • left_only表示该行仅来自左表df_current_est
    • right_only表示该行仅来自右表df_previous_est
  • 用map函数将_merge的取值映射为原DataFrame的名称,生成Source标记列
  • 最后删除冗余的_merge列,完成数据整理

示例输出

修改后输出会新增Source列,示例如下:

EstimateID  Season   RPIN GrowMethodCode Variety_code  Packout_pc  QtyBins          Source
0       10061    2023  R1000             FO          002        0.60      320  df_current_est
1       10061    2023  R1000             FO          002        0.60     9000  df_previous_est
2       10062    2023  R2000             FO          068        0.76     1000  df_current_est
3       10062    2023  R2000             FO          068        0.76    90000  df_previous_est

内容的提问来源于stack exchange,提问作者opperman.eric

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 06:23:34