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