You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas读取数据时如何为表头与数据设置不同分隔符?

解决Pandas读取表头含单个空格的多空格分隔数据问题

针对你遇到的表头含单个空格(如222 U)、数据行用多/单个空格分隔的矛盾场景,无法用单一分隔符同时正确解析表头和数据的问题,可通过分开处理表头与数据行的方式解决:

步骤1:单独提取并处理表头

先从文件中读取表头行,用**至少2个空格(\s{2,})**分割,保留含单个空格的字段名:

import re
import pandas as pd

filename = "your_data_file.txt"  # 替换为你的文件路径
rows_to_keep = [0, 2, 3, 5]  # 示例:你需要保留的行索引(含表头行)

# 读取文件所有行,定位表头行
with open(filename, encoding='latin1') as f:
    all_lines = f.readlines()

# 假设rows_to_keep中第一个是表头行,根据实际情况调整
header_row_idx = rows_to_keep[0]
header_content = all_lines[header_row_idx].strip()

# 用至少2个空格分割表头,得到正确的列名列表
column_names = re.split(r'\s{2,}', header_content)

步骤2:读取数据行并匹配列名

读取数据行时用**任意数量空格(\s+)**分割,跳过表头行,最后将处理好的列名赋值给DataFrame:

# 读取数据行:跳过非目标行 + 跳过表头行
df = pd.read_csv(
    filename,
    encoding='latin1',
    sep='\s+',
    skip_blank_lines=True,
    skiprows=lambda x: x not in rows_to_keep or x == header_row_idx,
    header=None  # 不自动识别表头
)

# 为DataFrame设置正确的列名
df.columns = column_names

补充说明

  • 需确保rows_to_keep中包含表头行的索引,且处理后的column_names长度与数据行的列数一致;
  • 如果表头行不在rows_to_keep的首位,需自行调整header_row_idx的取值逻辑;
  • 此方法避免了单一分隔符的局限性,同时兼容表头含单个空格、数据行多空格分隔的场景。

内容的提问来源于stack exchange,提问作者donpicoro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 05:53:11