从 .fits 文件构建 pandas 数据框

Construct pandas dataframe from a .fits file

我有一个包含数据的 .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)

根据你的问题和 astropy 文档 (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()

可能值得研究。

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

注意:对于大多数情况,带有 Table 的第二个选项更好,因为 FITS 文件存储数据的方式是大端,这在读入小端的 DataFrame 对象时可能会导致问题。参见 https://github.com/astropy/astropy/issues/1156