使用dropna后全列变为None?如何清理DataFrame中的NaN与字符串"nan"
处理DataFrame中原生NaN与字符串"nan"的空值清除问题
操作步骤
- 统一空值格式:先将所有字符串类型的"nan"替换为原生
np.nan,让pandas能统一识别空值
df.replace("nan", np.nan, inplace=True)
- 删除含空值的行:对整个DataFrame执行
dropna(),删除任意字段为空值的行(而非删除列)
df.dropna(inplace=True)
完整可运行代码
import pandas as pd import numpy as np data = [ ["Sevilla","Granada"], ["nan","Madrid"], ["Burgos",np.nan], ["Badajoz","Valencia"], [np.nan,np.nan], [np.nan,"nan"], [np.nan,"Barcelona"] ] df = pd.DataFrame( data, columns=["start_station_name", "end_station_name"], ) # 统一空值类型 df.replace("nan", np.nan, inplace=True) # 删除存在空值的行 df.dropna(inplace=True) print(df)
运行结果
仅保留起点和终点均有效的记录:
start_station_name end_station_name 0 Sevilla Granada 3 Badajoz Valencia
关键提示
- 不要单独对列执行
dropna(inplace=True),这会直接删除整列;需对整个DataFrame操作,目标是删除行 - 必须先完成空值格式统一,否则
dropna无法识别字符串类型的"nan"
内容的提问来源于stack exchange,提问作者Manuel Veiga
相关产品推荐
相关产品推荐

