【问题标题】:Remove a row in Python Dataframe if there are repeating values in different columns如果不同列中有重复值,则删除 Python Dataframe 中的一行
【发布时间】:2022-11-10 00:15:37
【问题描述】:

这可能是一个非常简单的问题,但我无法正确处理它,也没有在这里找到确切的答案。因此,假设我们有一个 Python 数据框,如下所示:

东风:

ID a b c d
0 1 3 4 9
1 2 8 8 3
2 1 3 10 12
3 0 1 3 0

我想删除所有在不同列中包含重复值的行。换句话说,我只对保留具有唯一值的行感兴趣。参考上面的例子,期望的输出应该是:

ID a b c d
0 1 3 4 9
2 1 3 10 12

(我没有故意更改 ID 值以使比较更容易)。如果您有任何想法,请告诉我。谢谢!

【问题讨论】:

    标签: python pandas database dataframe duplicates


    【解决方案1】:

    您可以将sets 的length 与列名称的长度进行比较:

    lc = len(df.columns)
    
    df1 = df[df.apply(lambda x: len(set(x)) == lc, axis=1)]
    print (df1)
        a  b   c   d
    ID              
    0   1  3   4   9
    2   1  3  10  12
    

    或通过Series.duplicatedSeries.any 进行测试:

    df1 = df[~df.apply(lambda x: x.duplicated().any(), axis=1)]
    

    DataFrame.nunique:

    df1 = df[df.nunique(axis=1).eq(lc)]
    

    或者:

    df1 = df[[len(set(x)) == lc for x in df.to_numpy()]]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-05
      • 1970-01-01
      • 1970-01-01
      • 2022-11-04
      • 2022-08-11
      • 1970-01-01
      • 2013-08-09
      • 1970-01-01
      相关资源
      最近更新 更多