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

时间:2018-03-22 04:45:28

标签: python pandas csv dataframe kaggle

我试图清除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'命令给我错误的答案?

1 个答案:

答案 0 :(得分:1)

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

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

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