python - 在 pandas DataFrame 中查找重复行的索引

标签 python pandas dataframe

pandas 在给定 DataFrame 中查找相同行的索引而不迭代单个行的方法是什么?

虽然可以使用 unique = df[df.duplicated()] 找到所有唯一行,然后使用 unique.iterrows() 迭代唯一条目并借助 pd.where() 提取相等条目的索引,pandas 的做法是什么?

示例: 给定以下结构的 DataFrame:

  | param_a | param_b | param_c
1 | 0       | 0       | 0
2 | 0       | 2       | 1
3 | 2       | 1       | 1
4 | 0       | 2       | 1
5 | 2       | 1       | 1
6 | 0       | 0       | 0

输出:

[(1, 6), (2, 4), (3, 5)]

最佳答案

使用参数duplicated对所有重复行使用 keep=False 然后按所有列进行 groupby 并将索引值转换为元组,最后将输出 Series 转换为 列表:

df = df[df.duplicated(keep=False)]

df = df.groupby(list(df)).apply(lambda x: tuple(x.index)).tolist()
print (df)
[(1, 6), (2, 4), (3, 5)]

如果您还想查看重复值:

df1 = (df.groupby(df.columns.tolist())
       .apply(lambda x: tuple(x.index))
       .reset_index(name='idx'))
print (df1)
   param_a  param_b  param_c     idx
0        0        0        0  (1, 6)
1        0        2        1  (2, 4)
2        2        1        1  (3, 5)

关于python - 在 pandas DataFrame 中查找重复行的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46629518/

相关文章:

python - Pandas - 有效的方法吗?

python - 在python中将列表列表转换为数据框

python - `__enter__` 方法的返回值应该在 python 中始终为 `self`

python - 计算获胜百分比

python - 如何将多个字典中的数据合并到 DataFrame 中的一行中

python-3.x - Pandas 添加唯一计数列

Python:根据特定条件对列表进行重复数据删除

python - pyodbc unicode 查询失败

python - 将 Pandas DataFrame 转换为 VALUES sql 语句

python - 根据从另一个 DataFrame 构建的条件列表选择 Pandas DataFrame 的子集