You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用dropna后全列变为None?如何清理DataFrame中的NaN与字符串"nan"

处理DataFrame中原生NaN与字符串"nan"的空值清除问题

操作步骤

  1. 统一空值格式:先将所有字符串类型的"nan"替换为原生np.nan,让pandas能统一识别空值
df.replace("nan", np.nan, inplace=True)
  1. 删除含空值的行:对整个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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 04:35:09