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

如何删除Python DataFrame中作为缺失值的点(.)

问题原因

df.dropna() 仅能识别pandas默认的标准缺失值类型,包括np.nan、None、pd.NA。你的数据里作为缺失标识的点符号.是字符串格式,不属于默认缺失值范畴,因此无法被dropna()识别移除。

可落地操作方案
  • 方案1:数据读取阶段提前标记缺失值(推荐)
    如果还在数据导入环节,调用pd.read_csv()、pd.read_excel()等读取接口时,通过na_values参数直接指定.为缺失值标识,读入后这类符号会自动转为标准NaN,后续可直接用dropna()删除:
import pandas as pd
# 读取文件时将.识别为缺失值
df = pd.read_csv("你的本地数据路径.csv", na_values='.')
# 正常执行缺失值删除即可
df_clean = df.dropna()
  • 方案2:对已加载完成的DataFrame做替换处理
    如果数据已经读入为DataFrame,先将全表的.替换为标准缺失值,再执行删除操作:
import pandas as pd
import numpy as np

# 将所有值为.的单元格替换为numpy标准缺失值np.nan
df = df.replace('.', np.nan)
# 执行缺失值删除
df_clean = df.dropna()

如果仅部分列存在.形式的缺失值,不需要全表替换,可以指定列操作,减少不必要的性能消耗:

# 仅对col_a、col_b两列做替换
target_cols = ['col_a', 'col_b']
df[target_cols] = df[target_cols].replace('.', np.nan)
df_clean = df.dropna()

如果存在点符号前后带空格的脏数据(比如' .'、'. '),可以用正则匹配做替换,避免漏处理:

# 匹配前后带任意数量空白字符的.,统一替换为缺失值
df = df.replace(r'^\s*\.\s*$', np.nan, regex=True)
df_clean = df.dropna()

内容的提问来源于stack exchange,提问作者Emy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 07:24:18