使用Pandas替换数据双引号为空无效果,如何正确移除多余引号?
问题原因
- 你使用的
df.replace[0]('"', '')语法不符合pandas规范:replace是DataFrame/Series的方法,不能通过方括号加列索引的方式调用。 - 默认的DataFrame.replace方法是全值匹配,只有单元格内容完全等于双引号才会触发替换,无法替换单元格内部的多个双引号。
- 注意不要用
input作为变量名,它是Python内置函数,覆盖后会引发未知错误。
修改后的代码(在你原有逻辑基础上调整)
import pandas as pd input_path = "你的输入文件路径" with open(input_path, 'r') as aaa: lines_1 = [line.rstrip('\n').split('\t') for line in aaa] df = pd.DataFrame(lines_1) # 对第0列的所有字符串执行替换,移除全部双引号 df[0] = df[0].str.replace('"', '', regex=False) # 如需导出结果,执行下方代码即可 df.to_csv("你的输出文件路径", sep='\t', header=False, index=False)
更简洁的写法(无需手动逐行读文件)
pandas内置的读文件方法直接支持自动处理引号:
import pandas as pd df = pd.read_csv( "你的输入文件路径", sep='\t', header=None, quoting=3 # 直接忽略所有引号,不会将引号识别为特殊边界字符 ) df.to_csv("你的输出文件路径", sep='\t', header=False, index=False)
内容的提问来源于stack exchange,提问作者LoganLee
相关产品推荐
相关产品推荐

