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

Python实现批量读取FITS文件表头并生成DataFrame需求

批量处理FITS文件并提取指定字段到DataFrame

用Python的astropy(专门处理天文FITS文件)和pandas(处理表格数据)就能搞定,新手也能快速上手。

第一步:安装依赖库

先在命令行里装需要的工具:

pip install astropy pandas glob2

第二步:完整代码实现

把下面的代码复制过去,替换你的FITS文件所在路径即可:

import os
import glob
from astropy.io import fits
import pandas as pd

# 定义要提取的表头字段(除文件名外)
target_fields = ['IMAGE', 'OBJECT', 'FILTER', 'EXPTIME', 'DATE-OBS', 'RA', 'DEC']
# 存储所有文件数据的列表
all_data = []

# 遍历指定目录下的所有FITS文件(替换成你的实际路径,支持*.fits.gz这类压缩文件)
for file_path in glob.glob('/your/fits/files/directory/*.fits'):
    # 获取纯文件名(不含路径)
    file_name = os.path.basename(file_path)
    
    try:
        # 读取FITS文件的表头信息
        header = fits.getheader(file_path)
        # 提取目标字段,缺失字段用空值填充
        row_data = {'File': file_name}
        for field in target_fields:
            row_data[field] = header.get(field, pd.NA)
        
        # 将当前文件数据加入列表
        all_data.append(row_data)
    except Exception as e:
        # 处理读取失败的文件,打印错误信息但不中断程序
        print(f"读取文件 {file_name} 出错: {str(e)}")

# 把收集到的所有数据转换成DataFrame
df = pd.DataFrame(all_data)

# 可选:把结果保存成CSV文件(方便后续查看或进一步处理)
df.to_csv('fits_summary.csv', index=False)

# 打印前5行数据验证结果
print(df.head())

关键注意事项

  • 路径替换:务必把/your/fits/files/directory/*.fits改成你实际的FITS文件路径,比如./data/*.fits(相对路径)或D:\\fits_files\\*.fits(Windows路径注意转义)
  • 字段大小写:FITS表头大小写敏感,如果你的字段名是小写形式(比如date-obs),要对应修改target_fields里的内容
  • 缺失字段处理:代码中用pd.NA填充找不到的字段,你也可以改成自定义默认值(比如'未知')
  • 压缩文件支持:如果是.fits.gz格式的压缩文件,把glob匹配规则改成*.fits.gz即可,astropy会自动识别解压

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 15:45:14