[英]how find the identical rows in a DataFrame — python
我有一个如下的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
,后者也不起作用。
任何帮助表示赞赏。
IIUC然后使用duplicated
:
In [132]:
df2.index[df2.duplicated()]
Out[132]:
Int64Index([2, 6], dtype='int64')
这样做之所以有效,是因为它检测到何时任何行都有重复的值,因为df2
是感兴趣的cols的子集,因此将测试所有列。
编辑
df2
似乎是多余的,您可以在这里做:
In [133]:
df.index[df.duplicated(subset=['c0', 'c1', 'c2'])]
Out[133]:
Int64Index([2, 6], dtype='int64')
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])}
这应该可以解决问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.