从.fits文件构造pandas数据帧

时间:2016-10-18 15:07:49

标签: python pandas dataframe astropy

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

2 个答案:

答案 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()

可能值得调查。

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

答案 1 :(得分:1)

注意:Table的第二个选项在大多数情况下更好,因为FITS文件存储数据的方式是big-endian,这可能会在读入little-endian的DataFrame对象时引起问题。参见https://github.com/astropy/astropy/issues/1156