如何将.fits.gz文件放入Pandas数据帧“ValueError:littleendian编译器不支持Bigendian缓冲区”

2024-09-28 19:21:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文件'3dhst.v4.1.5.master.fits.gz',我想打开它并将其生成一个数据帧。我想从中提取一组列,然后将其和另一个数据帧合并。我尝试了以下几点:

import astropy
from astropy.io import fits
master = fits.open('3dhst.v4.1.5.master.fits.gz')
masterdf = pd.DataFrame(master[1].data)
masterdf = masterdf[['grism_id' , 'field' , 'ra' , 'dec' , 'z_best', 'z_best_s' ,  'z_spec' , 
'z_peak_phot' , 'z_max_grism']]

我得到:

ValueError: Big-endian buffer not supported on little-endian compiler

这是一个错误消息,我以前见过这个文件,但仍然不明白为什么。astropy文档说,open()函数将无缝地打开用gzip、bzip2或pkzip压缩的FITS文件。请注意,在此上下文中,我们讨论的是使用这些实用程序之一(例如.FITS.gz文件)压缩的FITS文件。“如果只运行文件的打开部分,则不会出现错误。我还尝试使用以下方法打开该文件:

with gzip.open('3dhst.v4.1.5.master.fits.gz') as f:
     master = fits.open(f)

这将返回对master[0].header的空响应,因此此方法失败


Tags: 文件数据importmaster错误openbestgz
1条回答
网友
1楼 · 发布于 2024-09-28 19:21:37

使用Astropy中的Table类可能是一个更好的选择,它有一个转换为DataFrame的方法:

from astropy.table import Table
t = Table.read('3dhst.v4.1.5.master.fits.gz')
t = t[['grism_id' , 'field' , 'ra' , 'dec' , 'z_best', 'z_best_s' ,  'z_spec' , 'z_peak_phot' , 'z_max_grism']]
df = t.to_pandas()

https://docs.astropy.org/en/latest/table/pandas.html

相关问题 更多 >