如何在数据帧中找到相同的行--python
我有一个DataFrame a,如下所示,我希望在前3列中找到具有相同值的行如何在数据帧中找到相同的行--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
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')