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]
问题原因分析与解决办法
行列识别失败核心原因
TOPCAT导出的表格用竖线(|)作为列分隔符,但你没有指定sep参数,pandas默认用逗号解析,导致整行被识别成单列内容,提取列时自然出错。无论是read_csv还是read_table,都必须明确指定分隔符。FileNotFoundError原因
- 路径格式错误:Windows路径需用双反斜杠(
\\)或正斜杠(/),比如"C:/Users/xxx/data.file"; - 文件名不完整:遗漏了文件后缀(如
.txt),或者拼写错误; - 文件位置不符:另存后的文件不在你指定的
location路径下。
- 路径格式错误:Windows路径需用双反斜杠(
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
相关产品推荐
相关产品推荐

