如何使用Python去除pandas DataFrame列值中的单引号
修复方案
问题原因
你的代码不生效有两个核心问题:
- 你调用
replace('"', "")是替换双引号,你需要处理的是单引号,符号不匹配 - Pandas
replace方法默认是全单元格匹配替换,只有当单元格内容完全等于你传入的字符时才会触发替换,无法匹配到包裹在内容两侧的单引号
修复代码
有两种常用的实现方案,按需选择即可:
方案1:读取CSV时直接处理(效率最高)
如果你的CSV里所有单引号都是用来包裹字段值的边界符号,直接在读取时指定quotechar参数,会自动识别并剥离外层单引号:
import pandas as pd all_dat_list = [] for blob in blobs: dat = pd.read_csv( f"gs://{bucket_name}/{blob.name}", quotechar="'", # 指定单引号为字段包裹符号,读取时自动去除 dtype={"Fresh_ID": str, "Simpler_ID": str} # 若需要保留ID的前导零,指定字段为字符串类型,避免被转成数字丢失前导零 ) all_dat_list.append(dat) # 合并所有数据,这里用concat替代已废弃的append方法 all_dat = pd.concat(all_dat_list, ignore_index=True) all_dat.columns = column_names print(all_dat)
方案2:读取后全局替换单引号
如果你的数据里单引号是混杂在内容中间的,不是统一的字段包裹符号,用正则替换模式全局清除所有单引号:
import pandas as pd all_dat_list = [] for blob in blobs: dat = pd.read_csv(f"gs://{bucket_name}/{blob.name}") all_dat_list.append(dat) all_dat = pd.concat(all_dat_list, ignore_index=True) # 开启正则模式,替换所有单元格内的单引号 all_dat = all_dat.replace("'", "", regex=True) all_dat.columns = column_names print(all_dat)
内容的提问来源于stack exchange,提问作者Jowey
相关产品推荐
相关产品推荐

