代码之家  ›  专栏  ›  技术社区  ›  nchuang

如何保持数据框中所有列中具有相同值的行?

  •  0
  • nchuang  · 技术社区  · 5 年前

    我想找到所有列中具有相同值的所有行,或者更具体地说,删除所有有差异的行。我在想,我将遍历每一列,检查最大多数,并删除其他行。我觉得这种方法不是使用数据帧的最佳方法。

    我查看了以前的帖子,有人有类似的问题,但他们希望得到相反的结果,所以我将使用他们的示例:

    输入:

    index  A  B  C  D  E  F ....
     0     1  2  3  4  2  2
     1     1  2  3  4  2  2
     2     5  5  5  5  5  5 
     3     7  7  6  7  7  7
    

    期望输出:

    index  A  B  C  D  E  F ....
     0     1  2  3  4  2  2
     1     1  2  3  4  2  2
    

    这里可以有很多列。

    编辑:我提供的示例是错误的。对不起,我累了。我已经更新了示例。既然我已经打印出了我的问题,我想我基本上只是在问我如何找到所有相同的行。如果有多组相同的行,我也想知道它们。

    2 回复  |  直到 5 年前
        1
  •  2
  •   BENY    5 年前

    使用 nunique

    yourdf=df[df.nunique(1)==1]
    yourdf
           A  B  C  D  E  F
    index                  
    1      2  2  2  2  2  2
    2      5  5  5  5  5  5
    

    更新

    df[df.duplicated(keep=False)]
    Out[11]: 
           A  B  C  D  E  F
    index                  
    0      1  2  3  4  2  2
    1      1  2  3  4  2  2
    
        2
  •  0
  •   Tacratis    5 年前

    这可能不是一个非常有效的解决方案,但是如果您的数据帧足够小,这应该可以工作:

    df[df.std(axis=1)==0]
    

    (我假设所有值都是数字)