在 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
.
我正在尝试清理 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
.