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

如何在pandas中将DataFrame空值、全空格字段替换为'unknown'字符串

问题原因
  • apply 方法默认按列遍历,你写的lambda函数里的x实际是一整列的Series对象,不是单个单元格元素,所以isinstance(x, str)的判断永远不成立,替换逻辑根本没有执行。
  • 你自定义的替换值存放在变量value里,代码里错写为np.value,numpy不存在这个属性,就算遍历到单个元素也会触发报错。
修复方案

方法1:修改原遍历逻辑

把apply换成针对单个元素遍历的applymap,同时修正变量引用即可:

import pandas as pd
import numpy as np

df = pd.DataFrame([
    [-0.532681, 'foo', 0],
    [1.490752, 'bar', 1],
    [-1.387326, 'foo', 2],
    [0.814772, 'baz', ' '],     
    [-0.222552, '   ', 4],
    [-1.176781,  'qux', '  '],         
], columns='A B C'.split(), index=pd.date_range('2000-01-01','2000-01-06'))

value = 'unknown'
# 仅修改这一行即可
df = df.applymap(lambda x: value if isinstance(x, str) and x.isspace() else x)

print(df)

方法2:更高效的内置正则替换

不需要遍历,直接用pandas内置的正则替换功能,性能更优,写法更简洁:

# ^\s*$ 匹配完全为空白/空内容的字符串
df = df.replace(r'^\s*$', 'unknown', regex=True)

注:你原代码里写的替换值拼写为unkown,正确英文拼写为unknown,可根据自己的需求调整。

内容的提问来源于stack exchange,提问作者Al-Andalus

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 12:45:04