熊猫:无法检测两列中的重复项

时间:2017-01-09 16:00:15

标签: python pandas duplicates

我正在尝试从两列中删除重复项。如下所示,阿拉巴马州和阿拉斯加州。

enter image description here

但是,当我在下面查询时,它不会检测到重复项。当我使用drop_duplicates()时也一样。我已经检查过没有空格,因为它们也有相同的字符长度。有谁知道什么是错的?

enter image description here

编辑:在下面添加了示例代码。结果是相同的,没有空格,无法检测重复。

list1=['Alabama','Alabama','Alabama','Alabama','Alaska']
list2=['Alabama','Auburn','Florence','Jacksonville','Alaska']
df=pd.DataFrame(list1, columns=['States'])
df['Region']=pd.DataFrame(list2)

df.duplicated()

4 个答案:

答案 0 :(得分:2)

我认为您需要ne来比较列:

    instructions.zipWithIndex.foreach { case (value, index) =>
      value match {
        case WhileStmt() => {
            ---> Here I want to add elements to the instructions list.

        }
        case IfStmt() => {
                ...
        }
        _ => {
                ...
        }

时序:

df[df['States'].ne(df['Region'])]

答案 1 :(得分:1)

看起来您想直接比较使用不等式可以轻松完成的列:

In [93]:
df[df['States'] != df['Region']]

Out[93]:
    States        Region
1  Alabama        Auburn
2  Alabama      Florence
3  Alabama  Jacksonville

duplicated在单个列或所有列中共同查找重复值,它在此处失败,因为“Alabama”在一行中只出现一次,如果它出现在多行中则会删除它们

请注意,内置方法ne表示not equal更快但可能更不可读

答案 2 :(得分:1)

pd.DataFrame.duplicated()方法检测整个数据框中的重复行。但是,它不会检测行中所需的重复值。

答案 3 :(得分:1)

如果要删除,可以获取索引并通过索引

删除它
>

输出低于

>

df.drop_duplicates按行方式工作,因此如果有超过1行包含相同的值,它将被删除 示例如下

之前的drop_duplicate

>

第4,5行完全相同,因此除了第4行之外的所有行都将被删除,在drop_duplicates之后df将会是这样的

>