熊猫:将下一个列值与上一个列值进行比较

时间:2020-11-07 11:27:27

标签: python pandas

我具有以下带有示例数据的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行数据框。

我该怎么做?谢谢!

1 个答案:

答案 0 :(得分: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