Python 查找数据帧中的所有重复行

Python 查找数据帧中的所有重复行,python,pandas,dataframe,Python,Pandas,Dataframe,我希望能够获得数据集中重复行的所有实例的索引,而不必事先知道列的名称和数量。假设我有这个: col 1 | 1 2 | 2 3 | 1 4 | 1 5 | 2 我希望能够获得[1,3,4]和[2,5]。有没有办法做到这一点?这听起来很简单,但因为我事先不知道列,所以我不能像df[col==x..]那样先过滤所有行,然后使用apply或convertindex: 如果需要嵌套列表: L = df.groupby('col').apply(lambda x: lis

我希望能够获得数据集中重复行的所有实例的索引,而不必事先知道列的名称和数量。假设我有这个:

     col
1  |  1
2  |  2
3  |  1
4  |  1
5  |  2
我希望能够获得
[1,3,4]
[2,5]
。有没有办法做到这一点?这听起来很简单,但因为我事先不知道列,所以我不能像
df[col==x..]
那样先过滤所有行,然后使用
apply
或convert
index


如果需要嵌套列表:

L = df.groupby('col').apply(lambda x: list(x.index)).tolist()
print (L)
[[1, 3, 4], [2, 5]]
如果需要,可通过以下位置选择第一列:


好的,这很好,只是因为我不知道需要按df.columns分组的列,但这很好。我不知道自己怎么会不想到groupby。我为“按位置选择”添加了解决方案。这是否也可以找到包含多列的重复行?我的意思是,我在示例中只看到col,而不是col1、col2、col3等等。@nabin在多列中检查重复项时使用
df=df[df.duplicated(subset=['col'、'col1'、'col2']、keep=False)]
,如果要检查所有列的重复项
df=df[df.duplicated(keep=False)]
,这正是我所需要的
a = df.index.to_series().groupby(df.col).apply(list)
print (a)
col
1    [1, 3, 4]
2       [2, 5]
dtype: object
L = df.groupby('col').apply(lambda x: list(x.index)).tolist()
print (L)
[[1, 3, 4], [2, 5]]
a = df[df.iloc[:,0].duplicated(keep=False)]
      .groupby(df.iloc[:,0]).apply(lambda x: list(x.index))
print (a)
col
1    [1, 3, 4]
2       [2, 5]
dtype: object