Pandas:将下一列值与上一列值进行比较

2024-06-02 06:46:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下数据帧结构和示例数据:

        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条回答
网友
1楼 · 发布于 2024-06-02 06:46:52

如果存在^{}和筛选行,则使用^{}和筛选行。如果所有True和筛选行都在^{}中,则使用^{}表示不相等,使用^{}表示测试:

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

相关问题 更多 >