如何将a.fits.gz文件制作成pandas DataFrame 'ValueError.Big-endian buffer not supported on little-endian compiler'。小迭代编译器不支持大迭代缓冲区

问题描述 投票:0回答:1

我有这个文件 '3dhst.v4.1.5.master.fits.gz'我想打开它并将其变成一个DataFrame。我想从这个数据框中提取一个列的选择,然后将其与另一个DataFrame合并。我尝试了下面的方法。

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文档中说 "The open() 函数将无缝打开用gzip、bzip2或pkzip压缩过的FITS文件。請注意,在此情況下,我們談論的是用這些工具之一壓縮的FITS檔案(例如,.fits.gz檔案)。如果我只运行打开文件,我没有得到任何错误。我还尝试使用.fits.gz打开文件。

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

这将返回一个空的响应 master[0].header所以这个方法失败了。

python pandas astropy astronomy
1个回答
1
投票

使用 Table Astropy的类可能是一个更好的选择,它有一个方法来转换为pandas的 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.astrropy.orgenlatesttablepandas.html。

© www.soinside.com 2019 - 2024. All rights reserved.