在 Pandas DataFrame 列中搜索空值会给出相互矛盾的结果

Searching a Pandas DataFrame column for empty values gives contradictory results

我正在尝试清理 test data from Kaggle's Titanic dataset,特别是列 - 性别、票价、等级和年龄。为此,我想查明这些列中是否有空值。我加载数据:

import pandas as pd
test_address = 'path_to_data\test.csv'
test = pd.read_csv(test_address)

当我尝试在列中查找空值时,

True in test['Sex'].isna()

输出 True。

然而,

test['Sex'].isna().value_counts()

产出

False    418
Name: Sex, dtype: int64

这应该意味着没有任何空值(我可以通过目视扫描 csv 文件来确认这一点)。 test['Pclass'] 上的这些命令具有相似的输出。

为什么 'True in' 命令给我错误的答案?

运算符 in 应用于系列时,会检查其左操作数是否在右操作数的 index 中。由于系列中有第 1 行(True 的数字表示),因此运算符的计算结果为 True。

出于同样的原因,False in df['Sex'].isna()True,但 False in df['Sex'][1:].isna()False(后一个切片中没有第 0 行)。

你应该检查是否 True in df['Sex'].isna().values.