我有以下数据集:
Survived Not Survived
0 NaN 22.0
1 38.0 NaN
2 26.0 NaN
3 35.0 NaN
4 NaN 35.0
.. ... ...
886 NaN 27.0
887 19.0 NaN
888 NaN NaN
889 26.0 NaN
890 NaN 32.0
我想删除所有包含NaN的行,因此我编写了以下代码(数据集的名称为titanic_feature_data):
titanic_feature_data = titanic_feature_data.dropna()
当我尝试显示新数据集时,我得到以下结果:
Empty DataFrame
Columns: [Survived, Not Survived]
Index: []
出什么问题了?以及我该如何解决?
答案 0 :(得分:0)
通过使用titanic_feature_data.dropna()
,您将删除所有具有至少一个缺失值的行。从问题中打印的数据来看,似乎所有行都至少包含一个缺失值。是否可能仅您的所有行都包含至少一个缺失值?如果是这样,则完全有道理,dropna()
之后您的数据框为空,对吧?
已经说过,也许您正在寻找删除某个特定列(例如列Not Survived
)缺少值的行。然后,您可以使用:
titanic_feature_data.dropna(subset='Not Survived')
此外,如果您对为什么删除某些行感到困惑,建议您先显式检查缺失值,而不删除它们。这样一来,您就可以看到哪些实例将被删除:
incomplete_rows = titanic_feature_data.isnull().any(axis=1)
incomplete_rows
是一个布尔序列,它指示一行是否包含任何缺失值。您可以使用此系列来子集数据框,并查看哪些行包含缺失值(在您的示例中大概是所有值)
titanic_feature_data.loc[incomplete_rows, :]