我有一个文件'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
的空响应,因此此方法失败
使用Astropy中的
Table
类可能是一个更好的选择,它有一个转换为DataFrame
的方法:https://docs.astropy.org/en/latest/table/pandas.html
相关问题 更多 >
编程相关推荐