使用Pandas读取CSV文件时数据被双引号包裹的问题求助
问题场景
原导入代码:
import pandas as pd health_data = pd.read_csv("Data_File.csv", header=0, sep='[,]', engine='python')
导入后所有行(包括表头)都被双引号包裹,示例如下:
"Duration Average_Pulse Max_Pulse Calorie_Burnage Hours_Work Hours_Sleep"
0 "30 80 120 240.0 10.0 7"
1 "45 85 120 250.0 10.0 7"
这种情况导致数据无法正常转换为数值类型,需要去除引号恢复正常格式。
解决方案
方案1:导入时直接处理引号(推荐)
修改read_csv的参数,指定双引号为字段包裹符,同时设置正确的分隔符:
如果你的CSV实际是逗号分隔,用以下代码:
import pandas as pd health_data = pd.read_csv("Data_File.csv", header=0, sep=',', engine='python', quotechar='"')
如果CSV是空格分隔(从输出示例看更匹配),则调整分隔符为正则匹配多个空格:
health_data = pd.read_csv("Data_File.csv", header=0, sep='\s+', engine='python', quotechar='"')
原理:quotechar='"'会让Pandas识别双引号为整行/字段的包裹符号,读取时自动剥离;sep设置为实际分隔符,确保各列数据被正确拆分。
方案2:导入后批量去除引号
如果导入后仍有残留引号,可对文本类型列批量替换:
# 仅对文本类型(object)列去除双引号 health_data = health_data.apply(lambda col: col.str.replace('"', '') if col.dtype == 'object' else col) # 可选:自动转换数值类型 health_data = health_data.apply(pd.to_numeric, errors='ignore')
验证结果
处理后数据格式恢复正常:
Duration Average_Pulse Max_Pulse Calorie_Burnage Hours_Work Hours_Sleep
0 30 80 120 240.0 10.0 7
...
内容的提问来源于stack exchange,提问作者Birendra Khawas

