Pandas严格替换值问题:特定字符串替换结果异常的排查与解决
解决Pandas中替换特殊字符串值时计数异常的问题
我最近碰到个棘手的小问题:数据集里有大量格式为" - "的特殊值需要替换成"0.0"。一开始我在Jupyter里用这段代码确认特殊值的数量,结果是正常的59行:
df['Block Hours'][df['Block Hours'] == " - "].count()
可当我尝试用str.replace替换后再计数时,结果却变成了4万多行,完全偏离预期:
df['Block Hours'].str.replace(" - ", "0.0").count()
我用的是最新版Pandas,甚至特意加了regex=False参数,问题还是没解决。
问题根源
折腾半天后才发现,问题出在列的数据类型上!df['Block Hours']的类型是object,但并不是所有元素都是字符串类型——这就导致str.replace的行为跑偏了,它会把非字符串类型的元素也纳入计数范围,最终给出错误的总行数。
解决方案
解决思路很直接:先把整个列强制转换为字符串类型,再执行替换操作:
df['Block Hours'] = df['Block Hours'].astype(str).str.replace(" - ", "0.0")
这么操作之后,替换和计数就都能得到正确结果了。
内容的提问来源于stack exchange,提问作者Hannan
相关产品推荐
相关产品推荐

