我有一个包含数据的.fits文件。
我想从这个特定的文件构造一个pandas数据帧,但我不知道该怎么做。
data = fits.open('datafile')
data.info
给出:
No. Name Type Cards Dimensions Format
0 PRIMARY PrimaryHDU 6 (12, 250000) float64
和:
data[0].data.shape
给出:
(250000, 12)
答案 0 :(得分:5)
根据你的问题和astropy docs(http://docs.astropy.org/en/stable/io/fits/)的内容,看起来你只需要这样做:
from astropy.io import fits
import pandas
with fits.open('datafile') as data:
df = pandas.DataFrame(data[0].data)
编辑:
我没有太多经验,但是其他人提到你可以将拟合文件读入Table
对象,该对象具有to_pandas()
方法:
from astropy.table import Table
dat = Table.read('datafile', format='fits')
df = dat.to_pandas()
可能值得调查。
答案 1 :(得分:1)
注意:Table的第二个选项在大多数情况下更好,因为FITS文件存储数据的方式是big-endian,这可能会在读入little-endian的DataFrame对象时引起问题。参见https://github.com/astropy/astropy/issues/1156