繁体   English   中英

如何在DataFrame中找到相同的行— python

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM