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

如何在Pandas中避免str.title()将NaN转换为'Nan'文本?

解决DataFrame列str.title()处理时NaN转成'Nan'的问题

问题根源

你的初始代码里先调用了astype(str),这会把原本的NaN值转换成字符串类型的'NaN',之后再用str.title()就会变成'Nan',这才导致后续问题。

正确解法

直接对目标列使用str.title()即可,pandas的字符串方法本身会自动忽略NaN值,不需要额外判断:

import pandas as pd

df_cols = ['First Name','Last Name', 'State/Province','Country','Industry','System Type','Account Type', 'Customer Segment']
df[df_cols] = df[df_cols].apply(lambda col: col.str.title())

额外优化(可选)

如果需要把NaN替换为空字符串而不是保留NaN,可以用fillna()配合:

df[df_cols] = df[df_cols].apply(lambda col: col.str.title().fillna(''))

为什么你的尝试代码报错?

你写的lambda col: col.str.title() if pd.notnull(x) else ''里,变量x未定义,而且逻辑错误——col是整列数据,不是单个元素,所以会触发真值判断错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 15:45:45