【问题标题】:Pandas: Compare next column value with previous column value熊猫:将下一列值与前一列值进行比较
【发布时间】:2020-11-07 19:30:21
【问题描述】:

我有以下带有示例数据的 DataFrame 结构:

        Col1   Col2     Col3
        1         1      8
        5         4      7
        3         9      9
        1         NaN    NaN     

列有顺序,这意味着 Col1 在 Col2 之前,依此类推... 我想比较两个(或更多)后续列是否具有相同的值。如果是这样,我想删除整行。 NaN 值可以出现,但不应被视为具有相同的值

因此,对于上面的行,我希望删除第 1 行和第 3 行(第 1 行:Col1->Col2 相同值,第 3 行:Col2 -> Col3 相同值)并保留第 2 行和第 4 行数据框。

我怎样才能做到这一点?谢谢!

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    使用DataFrame.diff 并在每行不存在0 值时过滤行,DataFrame.ne 表示不相等,DataFrame.all 用于测试是否所有True 并过滤boolean indexing

    df = df[df.diff(axis=1).ne(0).all(axis=1)]
    print (df)
       Col1  Col2  Col3
    1     5   4.0   7.0
    3     1   NaN   NaN
    

    详情

    print (df.diff(axis=1))
       Col1  Col2  Col3
    0   NaN   0.0   7.0
    1   NaN  -1.0   3.0
    2   NaN   6.0   0.0
    3   NaN   NaN   NaN
    
    print (df.diff(axis=1).ne(0))
       Col1   Col2   Col3
    0  True  False   True
    1  True   True   True
    2  True   True  False
    3  True   True   True
    
    print (df.diff(axis=1).ne(0).all(axis=1))
    0    False
    1     True
    2    False
    3     True
    dtype: bool
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-27
      • 2019-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多