如何用Pandas读取表头含多分隔符、数据含逗号小数的CSV文件
解决CSV表头与数据分隔符不一致的问题
问题分析
你的CSV文件存在两个特殊情况:
- 表头行同时混用
;和,作为列分隔符 - 数据行用
;分隔列,小数用,作为小数点
直接用pd.read_csv的默认参数无法同时适配这两种情况,导致所有内容被读入同一列。
解决方案
分两步处理:先修复表头的分隔符,再读取数据并绑定正确的列名。
1. 读取并处理表头行
先单独提取表头行,将其中的;和,统一替换为同一种分隔符,拆分得到标准列名列表:
import pandas as pd # 打开文件读取表头行 with open("mypath\\test.csv", "r", encoding="utf-8") as f: # 跳过前3行无关内容 for _ in range(3): next(f) # 读取第4行的表头 header_line = f.readline().strip() # 将表头里的;和,都替换为逗号,再拆分得到列名 column_names = header_line.replace(";", ",").split(",")
2. 读取数据并设置列名
读取数据时指定;为列分隔符,,为小数点,跳过前4行(3行注释+1行原表头),并将处理好的列名赋值给DataFrame:
df = pd.read_csv( "mypath\\test.csv", skiprows=4, delimiter=";", decimal=",", names=column_names )
验证结果
执行后会得到你期望的5列数据:
column1 column2 column3 column4 column5 0 1.234 2.665 0.888 3.891 3.762 1 2.232 1.233 0.888 3.789 3.524
内容的提问来源于stack exchange,提问作者Swawa
相关产品推荐
相关产品推荐

