如何替换pandas DataFrame字符串内的逗号等特殊字符?
解决pandas DataFrame单元格内子字符串替换失效问题
你之前使用replace(",","-")没有生效是因为pandas的replace()方法默认执行全单元格精确匹配,只有当单元格的全部内容刚好是,的时候才会替换,无法匹配单元格内部的子字符串。
解决方案
方法1:开启regex参数全局替换
直接给replace()方法添加regex=True参数,即可实现所有单元格内部的子字符串匹配替换:
import pandas as pd # 将所有逗号替换为横线 newdf1 = newdf.replace(',', '-', regex=True) # 如果要替换为空,使用下面的代码 # newdf1 = newdf.replace(',', '', regex=True)
这个方法会自动扫描整个DataFrame的所有单元格,只替换字符串中的目标子串,对数值类型的单元格不会产生任何影响。
方法2:仅对字符串类型列精准处理
如果你不想影响非字符串列,可以只针对object类型(pandas存储字符串的默认类型)的列执行替换操作:
newdf1 = newdf.apply( lambda col: col.str.replace(',', '-') if col.dtype == 'object' else col, axis=0 )
补充提示:如果你只是需要避免逗号干扰CSV导出,也可以在导出CSV时指定
quoting=csv.QUOTE_ALL参数给所有字段加引号,无需提前替换逗号,MySQL导入时支持识别带引号的字段。如果你确实需要移除/替换逗号,使用上面的替换方法即可。
内容的提问来源于stack exchange,提问作者shweta_developer
相关产品推荐
相关产品推荐

