【问题标题】:Dropping any row with identical cell values across columns跨列删除具有相同单元格值的任何行
【发布时间】:2019-09-13 00:01:44
【问题描述】:

我找不到任何解决此问题的方法; this is the closest I guess, but I can't figure out how to implement the ideas here.

不知何故,我发现自己正在查看这样的数据框:

data = [['apple', 'banana','pear','mango'], ['pasta', 'pasta','pasta','pasta'], ['onion', 'tomato','celery','potato'], ['dog', 'dog','dog','dog']]
df = pd.DataFrame(data) 
df 

哪些输出:

        0   1         2     3
0   apple   banana  pear    mango
1   pasta   pasta   pasta   pasta
2   onion   tomato  celery  potato
3   dog     dog     dog     dog

第 2 行和第 4 行在所有 4 列中具有相同的值,我想去掉它们,所以最终的 df 看起来像这样:

        0   1         2     3
0   apple   banana  pear    mango
1   onion   tomato  celery  potato

使用drop_duplicates() 不会做任何事情,因为没有重复的行。与duplicated() 相同。

以下是我能想到的唯一想法(如果你可以这么说的话)。如果我跑

df.transpose()

我明白了

        0   1       2        3
0   apple   pasta   onion   dog
1   banana  pasta   tomato  dog
2   pear    pasta   celery  dog
3   mango   pasta   potato  dog

现在如果我在第四列运行duplicated()

df.duplicated(3)

我明白了

0    False
1     True
2     True
3     True
dtype: bool

所以也许我可以想出一个可以转置df的函数,在每一列上运行duplicated(),如果除第一个以外的所有值都以True返回,然后将df转回恢复原状。

但我不知道该怎么做;另外,我很想知道是否有更优雅的方式可以到达同一个地方。

【问题讨论】:

  • 你可以使用:df[df.nunique(1)>1]
  • @anky_91 - 哇,这既快速又正确!您能否解释一下,对于我们这些仍然在使用 pandas 的人(最好在答案中),这是如何完成任务的?
  • @rafaelc - 你在这两个方面都是对的。 df.nunique 更优雅,但在其他情况下,跨列测试 duplicated() 的能力可能会派上用场!
  • 根据要求,我发布了一个带有详细解释的答案。我试过了,如果有不清楚的地方请告诉我

标签: python pandas


【解决方案1】:

您可以使用 df.nunique()axis=1 并检查所有列的唯一值超过 1 个的行。:

每个文档:nunique()

计算请求轴上的不同观察值。

因此,如果我们测试:

df.nunique(1)

这个输出:

0    4
1    1
2    4
3    1

自然

df.nunique(1)>1

会返回:

0     True
1    False
2     True
3    False

所以在boolean indexing 的帮助下,我们可以做到:

df[df.nunique(1)>1]

返回所需的输出:

       0       1       2       3
0  apple  banana    pear   mango
2  onion  tomato  celery  potato

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-17
    • 2017-11-07
    • 2022-12-16
    • 1970-01-01
    • 2018-01-04
    • 1970-01-01
    相关资源
    最近更新 更多