从 .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()
可能值得研究。
注意:对于大多数情况,带有 Table 的第二个选项更好,因为 FITS 文件存储数据的方式是大端,这在读入小端的 DataFrame 对象时可能会导致问题。参见 https://github.com/astropy/astropy/issues/1156
我有一个包含数据的 .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()
可能值得研究。
注意:对于大多数情况,带有 Table 的第二个选项更好,因为 FITS 文件存储数据的方式是大端,这在读入小端的 DataFrame 对象时可能会导致问题。参见 https://github.com/astropy/astropy/issues/1156