pandas DataFrame: How to avoid 'ValueError: Big-endian buffer not supported on little-endian compiler' when deleting certain values
pandas DataFrame: How to avoid 'ValueError: Big-endian buffer not supported on little-endian compiler' when deleting certain values
我有各种包含光谱数据的 .fits 文件。我正在将数据转换为 pandas DataFrames。一些 .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("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())
这是我从另一个 post 那里找到的关于此错误消息的信息,但这对我不起作用。
你能试试这样吗:
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]
我有各种包含光谱数据的 .fits 文件。我正在将数据转换为 pandas DataFrames。一些 .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("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())
这是我从另一个 post 那里找到的关于此错误消息的信息,但这对我不起作用。
你能试试这样吗:
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]