DataFrame中使用.replace()无法替换分号问题求助
解决DataFrame列中分号替换无效的问题
嘿,我来帮你搞定这个替换无效的问题!你的代码之所以没效果,主要有两个核心原因:
问题根源
- Python字符串是不可变类型:
i.replace(';', ' ')会生成一个新的字符串,但你只是执行了这个操作,没有把新字符串存回原DataFrame的dateTime列里,原数据自然不会有任何变化。 - 用for循环遍历pandas列效率极低:pandas是为矢量化操作设计的,循环处理单个元素不仅速度慢,还容易出现遗漏赋值的问题。
正确解决方案(强烈推荐)
直接使用pandas内置的str.replace方法,这是专门针对字符串列的矢量化操作,一行代码就能彻底解决问题:
excel_file['dateTime'] = excel_file['dateTime'].str.replace(';', ' ')
这个方法会自动遍历dateTime列的每一个元素,执行分号替换为空格的操作,并且直接把结果赋值回原列,真正修改DataFrame的原始数据。
如果非要用循环实现(不推荐)
如果你坚持想用循环完成(不建议在大数据量场景下使用),需要通过索引把替换后的值明确存回DataFrame:
for idx, value in excel_file['dateTime'].items(): excel_file.loc[idx, 'dateTime'] = value.replace(';', ' ')
替换后效果示例
完成操作后,你的dateTime列数据会变成:
11-06-18 18-06-18 18-09-18 14-06-18 20-06-18 13-06-18 21-06-18 19-06-18 19-06-18 20-06-18 11-06-18 22-06-18
内容的提问来源于stack exchange,提问作者robsanna
相关产品推荐
相关产品推荐

