基于指定公共列对Pandas DataFrame列表按keep='first'规则去重
Pandas DataFrame 列表按指定公共列组合去重方案
核心规则对齐
- 输入为完成类型校验的列表
tempDFList,列表内所有元素均为pandas.core.frame.DataFrame类型 - 不要求列表内各DataFrame的列结构完全一致,仅要求公共包含
Previous Pivot Price、Pivot Price两个关键列 - 去重逻辑完全匹配Pandas原生
drop_duplicates默认的keep='first'规则:相同关键列组合的DataFrame,仅保留列表中最早出现的实例,后续同组合的实例全部剔除 - 参考场景说明:原始列表含3个单行DataFrame,列结构各有差异,前两个DataFrame的两个关键列取值均为0.86408、0.871180,属于重复组,仅保留第一个;第三个DataFrame的关键列组合与前者无重合,直接保留,最终输出列表共2个有效DataFrame
实现代码
# 记录已出现的关键列组合,避免重复判断 seen_keys = set() filtered_result = [] for df in tempDFList: # 提取当前DataFrame对应的关键列组合值 cur_key = ( df["Previous Pivot Price"].iloc[0], df["Pivot Price"].iloc[0] ) # 首次出现的组合直接保留 if cur_key not in seen_keys: seen_keys.add(cur_key) filtered_result.append(df)
实现说明
- 全程不改动单个DataFrame的原有结构、数据内容,不会因列不对齐产生空值填充
- 无需将所有DataFrame合并拼接为大表再拆分,省去冗余的列对齐、表合并开销
- 适配单行情景(列表每个元素为单行DF)、多行情景(列表每个元素为多行DF,按首行关键值做层级去重)两种常见使用场景
内容的提问来源于stack exchange,提问作者nipy
相关产品推荐
相关产品推荐

