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

如何使用pandas读取多分隔符文本文件并设置自定义表头

解决方案

你要读取的是固定宽度格式的天文数据文件,默认pd.read_csv()的分隔规则不匹配该文件格式,按以下步骤操作即可:

1. 确认列规则

该文件的列对应位置和默认列名已经从官方说明文档中整理完成,参数可直接使用:

  • 默认列名列表:['Seq', 'Name', 'RAdeg', 'DEdeg', 'Vmag', 'logTe', 'logg', '[Fe/H]', 'l', 'b', 'D', 'E(B-V)', 'AJ', 'Simbad', '_RA', '_DE']
  • 列宽度对应起止位置:[(0,4), (4,23), (23,32), (32,41), (41,47), (47,53), (53,59), (59,66), (66,74), (74,82), (82,88), (88,94), (94,100), (100,132), (132,140), (140,148)]

如果你需要设置自定义表头,直接替换上述列名列表为你自己定义的名称即可。

2. 调用固定宽度读取接口

pandas提供了专门读取固定宽度文件的pd.read_fwf()接口,传入上述参数即可完成读取,示例代码如下:

import pandas as pd

# 自定义/默认列名
col_names = [
    'Seq', 'Name', 'RAdeg', 'DEdeg', 'Vmag', 'logTe', 'logg',
    '[Fe/H]', 'l', 'b', 'D', 'E(B-V)', 'AJ', 'Simbad', '_RA', '_DE'
]
# 列位置规则
colspecs = [
    (0,4), (4,23), (23,32), (32,41), (41,47), (47,53), (53,59),
    (59,66), (66,74), (74,82), (82,88), (88,94), (94,100),
    (100,132), (132,140), (140,148)
]
# 读取数据
df = pd.read_fwf(
    'http://cdsarc.u-strasbg.fr/ftp/J/A+A/568/A22/tablef3.dat',
    colspecs=colspecs,
    names=col_names
)

3. 验证结果

读取完成后执行df.head()即可查看前5行数据,确认列拆分、表头设置均符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 15:09:01