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

Python pandas提取天文数据表格指定列遇问题求助

问题描述

我是Python完全新手,希望导入电脑中由TOPCAT匹配两个表格得到的天文数据表格,提取相关列并做后续处理。目前编写的脚本如下:

import pandas as pd
input_file = "location\\filename"
dataset = pd.read_csv(input_file,skiprows=12,usecols=[1])

该文件类型显示为“File”,用记事本查看发现前几行是描述性内容,因此使用skiprows参数跳过。但数据在记事本中列间以线条分隔,使用usecols提取第一列时,返回的却是第一行内容且值间有大量竖线,疑似未正确识别行列。

尝试过以下操作:

  • 修改文件并另存为其他格式,出现错误:
    FileNotFoundError: [Errno 2] No such file or directory: 'location\\filename'
    
  • 使用pd.read_table替代pd.read_csv,无变化也无报错;
  • 尝试提取多列(usecol=[1,2]),出现错误:
    ValueError: Usecols do not match columns, columns expected but not found: [1, 2]
    
问题原因分析与解决办法
  1. 行列识别失败核心原因
    TOPCAT导出的表格用竖线(|)作为列分隔符,但你没有指定sep参数,pandas默认用逗号解析,导致整行被识别成单列内容,提取列时自然出错。无论是read_csv还是read_table,都必须明确指定分隔符。

  2. FileNotFoundError原因

    • 路径格式错误:Windows路径需用双反斜杠(\\)或正斜杠(/),比如"C:/Users/xxx/data.file";
    • 文件名不完整:遗漏了文件后缀(如.txt),或者拼写错误;
    • 文件位置不符:另存后的文件不在你指定的location路径下。
  3. ValueError原因
    由于pandas未正确识别列,整个文件仅被解析为一列,你指定的[1,2]列不存在,因此触发报错。

修正后的示例代码
import pandas as pd
# 替换为实际文件路径,用双反斜杠或正斜杠
input_file = "C:\\YourFolder\\your_topcat_data"
# 指定竖线为分隔符,用python引擎避免解析问题
dataset = pd.read_csv(input_file, skiprows=12, sep='|', engine='python', usecols=[1])
额外建议
  • 若不确定分隔符,先打印文件前20行确认:
    with open(input_file, 'r') as f:
        for _ in range(20):
            print(f.readline())
    
  • TOPCAT导出时优先选择CSV格式,能减少导入时的解析问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 08:20:30