使用df.applymap(str)时如何避免将NAN转为字符串类型
解决方案
修改applymap的转换逻辑,仅对非空值执行字符串转换,空值保留原始状态即可:
df = df.applymap(lambda x: str(x) if pd.notna(x) else x)
如果没有给pandas设置pd别名,替换为pandas.notna(x)即可。
原写法失效与适配说明
- 你尝试的
df.where(~df.notna(),df.applymap(str))逻辑顺序错误:df.applymap(str)会先执行,所有空值已经被转换为字符串'nan',后续条件判断无法识别原始空值 - 本方案完全基于
applymap实现,逐元素判断空值使用pandas原生的pd.notna()方法,不会触发「boolean value of NA is ambiguous」报错,完全符合你的限制要求。
内容的提问来源于stack exchange,提问作者J_Coder
相关产品推荐
相关产品推荐

