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

如何修改代码导出应用重复行处理后的完整DataFrame?

需求与解决方案

需求概述

需对数据集完成三项处理任务:

  • 基于A、B、C、D、E列识别重复行组
  • 重复行中,若D列值为abc,将对应E列值设为0
  • 每个重复组内仅保留E列最大值的行,其余重复行E列设为0;新增change列标记所有被修改的行

现有代码仅导出处理后的重复行,需修改为导出应用所有修改后的完整原数据集。

修改后代码

# 创建原DataFrame的副本,避免修改原始数据
df_processed = df.copy()

# 标记所有属于重复组的行(包含每组首次出现的行)
duplicate_cols = ['A', 'B', 'C', 'D', 'E']
is_duplicate_group = df_processed.duplicated(subset=duplicate_cols, keep=False)

# 任务2:重复行中D列为'abc'的,将E设为0
m1 = is_duplicate_group & df_processed['D'].eq('abc')
df_processed.loc[m1, 'E'] = 0

# 任务3:重复组内仅保留E列最大值的行,其余设为0
# 计算每个重复组的E列最大值
group_max_e = df_processed[is_duplicate_group].groupby(duplicate_cols)['E'].transform('max')
# 标记重复组中E不等于最大值的行
m2 = is_duplicate_group & (df_processed['E'] != group_max_e)
df_processed.loc[m2, 'E'] = 0

# 添加change列,标记所有被修改的行
df_processed['change'] = m1 | m2

# 导出完整的处理后数据集
df_processed.to_csv('full_processed_data.csv', index=False)

关键修改点

  • 直接操作原数据的副本,确保保留所有非重复行,而非仅处理重复行
  • 使用duplicated(keep=False)标记重复组内的所有行(原代码仅标记第二次及以后出现的重复行)
  • 优化任务3的逻辑:通过分组求最大值精准定位需修改的行,避免原排序去重逻辑可能导致的误差
  • 合并两类修改标记到change列,完整记录所有被修改的行

内容的提问来源于stack exchange,提问作者sudha smitha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 19:42:18