如何在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
相关产品推荐
相关产品推荐

