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

如何快速查找Pandas DataFrame中重复行索引的行及映射原索引

解决方案

这里有一套高效的Pandas内置方法实现方案,全程无需循环,完全符合你的需求:

1. 先还原你的数据场景

import pandas as pd

# 原DataFrame
df = pd.DataFrame({
    "A": [["ab", "cd"], ["cd", "de"], ["de", "ef"], ["gh"]],
    "B": [1, 2, 1, 1]
})

# 执行拆分操作
df_exploded = df.explode("A")

2. 筛选出索引出现多次的行

利用index.value_counts()快速统计每个索引的出现频次,再筛选出频次≥2的索引,最后用这些索引过滤拆分后的DataFrame:

# 获取出现次数≥2的原索引
repeat_indices = df_exploded.index.value_counts()[lambda cnt: cnt >= 2].index

# 提取目标行
target_rows = df_exploded.loc[repeat_indices]

这一步是矢量化操作,比循环df.loc[i]效率高得多,适合处理大数据量。

3. 关联原DataFrame的对应行

如果需要获取这些索引对应的原DataFrame记录,直接用repeat_indices去原表提取即可:

original_records = df.loc[repeat_indices]

original_records的索引就是原DataFrame的真实索引(0、1、2),对应原数据中包含多个元素的行。

可选:保留原索引映射

如果后续操作可能修改拆分后DataFrame的索引,可以提前新增一列存储原索引,避免丢失映射关系:

df_exploded["original_idx"] = df_exploded.index

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 20:27:30