Pandas 带~isin()的if语句

Pandas 带~isin()的if语句,pandas,Pandas,我有一个数据帧df: import pandas as pd d = {'cola': ['a1', 's7', 'm5']} df = pd.DataFrame(d) df cola 0 a1 1 s7 2 m5 以下代码的输出为1,但应为0,因为cola中的s7不在['a1'、'r3'、'm5']中: if ~df["cola"].isin(['a1', 'r3', 'm5']).any(): print(0) else: print(1)

我有一个数据帧df:

import pandas as pd
d = {'cola': ['a1', 's7', 'm5']}
df = pd.DataFrame(d)
df

    cola
0     a1
1     s7
2     m5
以下代码的输出为1,但应为0,因为cola中的s7不在['a1'、'r3'、'm5']中:

if ~df["cola"].isin(['a1', 'r3', 'm5']).any():
    print(0)
else:
    print(1)

如果A列(cola)的任何值不是a1、r3或m5类型,代码应该打印0。

它的工作方式检查“cola”值是否在(['a1'、'r3'、'm5']),并且它是真的,因此df[“cola”].isin(['a1'、'r3'、'm5'])。any()是真的。然后你要否定它,它会把你带到另一个:。您需要使用all()。干杯

为什么要在
df['cola']
前面添加
~
not any
表示它们都不正确?@Quang Hoang:检查cola中的任何值是否不是a1、r3或M5类型。在本例中,
cola
首先包含
a1
。所以
df['cola'].isin(['a1','r3','m5'])。any()
True
。因此,它的否定是
False
。您似乎想检查
cola
中是否没有一个位于
['a1'、'r3'、'm5']
中。在这种情况下,您可能需要使用
~df['cola'].isin(['a1','r3','m5'])。all()
?@Quang-Hoang:我想我不明白这个问题,抱歉!如果cola列中的任何值不是'a1'或'r3'或'm5',也就是说,如果是任何其他类型的基本逻辑,
any不在==not all在
中,我想打印0。试试我的代码,看看。好的,谢谢。我现在明白了yes quang的~df['cola'].isin(['a1','r3','m5'])。all()是我需要的