Python 熊猫数据帧:如何避免';ValueError:little-endian编译器';删除某些值时
我有各种.fits文件,其中包含光谱数据。我正在将数据转换为数据帧。一些.fits文件包含两页数据,这就是我包含try函数的原因。一旦我拥有了所有数据,我会尝试删除不包含数据的行:Python 熊猫数据帧:如何避免';ValueError:little-endian编译器';删除某些值时,python,pandas,astropy,astronomy,Python,Pandas,Astropy,Astronomy,我有各种.fits文件,其中包含光谱数据。我正在将数据转换为数据帧。一些.fits文件包含两页数据,这就是我包含try函数的原因。一旦我拥有了所有数据,我会尝试删除不包含数据的行: try: df = pd.DataFrame(grism1D[1].data) dfb = pd.DataFrame(grism1D[2].data) df = df.append(dfb) df = df[df.flux != 0] except: print("Missin
try:
df = pd.DataFrame(grism1D[1].data)
dfb = pd.DataFrame(grism1D[2].data)
df = df.append(dfb)
df = df[df.flux != 0]
except:
print("Missing Data")
df = pd.DataFrame(grism1D[1].data)
df = df.append(df)
df = df[df.flux != 0]
这是可行的,但是如果我不包括df=df.append(df)行,我会得到一个错误
ValueError: Big-endian buffer not supported on little-endian compiler
我以一种异常愚蠢的方式解决了这个问题,将数据添加到自身,这实际上是将光谱的点相互重叠。这在最终的图像中看起来很好,但我希望有一种方法可以做到这一点,在不将数据附加到自身的情况下,我不会得到错误消息
我也试过了
df=pd.DataFrame(np.array(grism1D).byteswap().newbyteorder())
这是我从另一篇关于此错误消息的帖子中发现的,但这对我不起作用。你能试试这样的方法吗:
from astropy.table import Table, vstack
tbl = Table.read('your_fits_file.fits', hdu=1)
try:
tbl2 = Table.read('your_fits_file.fits', hdu=2)
except:
pass
else:
tbl = vstack([tbl, tbl2])
df = tbl.to_pandas()
df = df[df.flux != 0]
这会运行,但在循环的几乎每次迭代之后,它都会向我发出警告消息:“警告:MergeConflictWarning:无法合并元键'EXPTIME'类型,并选择EXPTIME=9223.48681599999[astropy.utils.metadata]”在调用
vstack()时使用metadata\u conflicts='silent'
)
以抑制这些警告。