如何在数据帧中找到相同的行--python

如何在数据帧中找到相同的行--python,python,numpy,pandas,dataframe,Python,Numpy,Pandas,Dataframe,我有一个DataFrame a,如下所示,我希望在前3列中找到具有相同值的行 import pandas as pd import io import numpy as np import datetime A= """ c0 c1 c2 c3 c4 0 1 a d 3 4 1 1 a c 0 0 2 1 a d 3 1 3 1 b c 0 0 4 2 b

我有一个DataFrame a,如下所示,我希望在前3列中找到具有相同值的行

import pandas as pd
import io
import numpy as np
import datetime
A= """
   c0   c1   c2   c3   c4
0  1    a    d    3    4
1  1    a    c    0    0
2  1    a    d    3    1
3  1    b    c    0    0
4  2    b    d    8    5
5  2    b    d    3    3
    """

df = pd.read_csv(io.StringIO(A), delimiter='\s+')
df2= pd.DataFrame(df, columns=['c0', 'c1', 'c2'])
for i in range(0,4):
    row1 = df2.irow(i)
    row2 = df2.irow(i+1)
    val=all(unique_columns = row1 != row2)   
    print(i)
我想让它打印
2,5

好吧,这是行不通的,即使它会,它也不能得到紧随其后的行

或者,我尝试了
np.unique(df2)
,以查看列数是否与
df2
不同,后者也不起作用

感谢您的帮助

In [211]: a.groupby(['c0','c1','c2']).indices
Out[211]:
{(1, 'a', 'c'): array([1]),
 (1, 'a', 'd'): array([0, 2]),
 (1, 'b', 'c'): array([3]),
 (2, 'b', 'd'): array([4, 5])}
这应该可以达到目的。

IIUC然后使用:

这是因为它检测任何行是否有重复的值,因为
df2
是感兴趣的列的子集,然后测试所有列

编辑

df2
在这里似乎是多余的,您只需执行以下操作:

In [133]:
df.index[df.duplicated(subset=['c0', 'c1', 'c2'])]

Out[133]:
Int64Index([2, 6], dtype='int64')

…但在c0-c2中,只有第2行的值与第0行的值相同,第6行的值不相同。@CTZU,是的,但第5行的值与第4行的值相同。可能包括
子集,因为只需要前3列。您是对的,OP可能需要考虑移除DF2以防止不必要的步骤,并且可能会使数据翻倍。这对于当您真正关心组并希望对数据进行分类时非常有用。谢谢
In [133]:
df.index[df.duplicated(subset=['c0', 'c1', 'c2'])]

Out[133]:
Int64Index([2, 6], dtype='int64')