Python DataFrame将两列分别与相应的内容进行比较,并检查一致性

Python DataFrame将两列分别与相应的内容进行比较,并检查一致性,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个数据集,其中有两列可疑地保存着相同的信息,并希望检查它们的一致性 具体来说,目标是查看取消的时间是否为0(1),然后保留状态必须为签出(取消),如果存在异常值,则打印异常值 df.loc[1:100,['取消','预订状态]] 显示: 我尝试了几种方法,例如 #检查异常值 (df['is_cancelled']==0和df['reservation_status']=='cancelled')。任意(1) 但是失败了。从技术上讲,它的拼写是Cancelled,但是假设您想使用Can

我有一个数据集,其中有两列可疑地保存着相同的信息,并希望检查它们的一致性

具体来说,目标是查看取消
的时间是否为
0
1
),然后
保留状态必须为
签出
取消
),如果存在异常值,则打印异常值

df.loc[1:100,['取消','预订状态]]
显示:

我尝试了几种方法,例如

#检查异常值
(df['is_cancelled']==0和df['reservation_status']=='cancelled')。任意(1)

但是失败了。

从技术上讲,它的拼写是Cancelled,但是假设您想使用Cancelled,您可以在括号内使用带有多个条件的
.loc
,并使用
&
而不是
,将
分开

import pandas as pd

df = pd.DataFrame({'is_canceled':[0,0,1,1], 'reservation_status': ['Check-Out','Canceled','Check-Out','Canceled']})

df.loc[
    ((df['is_canceled']==0) & (df['reservation_status']!='Check-Out')) |
    ((df['is_canceled']==1) & (df['reservation_status']!='Canceled'))
]
输出

    is_canceled reservation_status
1   0                     Canceled
2   1                    Check-Out

从技术上讲,它的拼写是Cancelled,但假设您想使用Cancelled,您可以在括号内使用带有多个条件的
.loc
,并使用
&
not
,使用
|
表示
或将两者分开

import pandas as pd

df = pd.DataFrame({'is_canceled':[0,0,1,1], 'reservation_status': ['Check-Out','Canceled','Check-Out','Canceled']})

df.loc[
    ((df['is_canceled']==0) & (df['reservation_status']!='Check-Out')) |
    ((df['is_canceled']==1) & (df['reservation_status']!='Canceled'))
]
输出

    is_canceled reservation_status
1   0                     Canceled
2   1                    Check-Out

是的,很奇怪。毫无理由,这个已发布的数据集在所有数据点中都使用了
cancelled
,这很奇怪。毫无理由,此发布的数据集在所有数据点中都使用了
取消的