gpt4 book ai didi

python - 从 Pandas DataFrame 中提取多个非连续的索引值

转载 作者:太空宇宙 更新时间:2023-11-03 13:46:46 25 4
gpt4 key购买 nike

我创建了一个 pandas 数据框,通过以下方式从 scipy.io 读取它(file.sav 是在不同机器上创建的 IDL 结构。scipy.io 创建了一个标准的 python 字典):

from scipy import io
import pandas as p
import numpy as np
tmp=io.readsav('file.sav', python_dict = True)
df=pd.DataFrame(tmp,index=tmp['shots'].astype('int32'))

数据框包含一组值(来自 file.sav)和作为索引的一系列整数,形式为 19999、20000、30000 等。现在我想取这些指数的一个子集,说

df.loc[[19999,20000]]

由于某些原因,我得到了表格的错误

raise ValueError('Cannot index with multidimensional key')

加上其他和最后

ValueError: Big-endian buffer not supported on little-endian compiler

但我已经检查过我正在使用的机器和创建 file.sav 的机器都是小端。所以我不认为这是问题所在。

最佳答案

您的输入文件是大端。请参阅此处对其进行转换:http://pandas.pydata.org/pandas-docs/dev/gotchas.html#byte-ordering-issues

前后对比

In [7]: df.dtypes
Out[7]:
a >f4
b >f4
c >f4
shots >f4
dtype: object

In [9]: df.apply(lambda x: x.values.byteswap().newbyteorder())
Out[9]:
<class 'pandas.core.frame.DataFrame'>
Int64Index: 100 entries, 20000 to 20099
Data columns (total 4 columns):
a 100 non-null values
b 100 non-null values
c 100 non-null values
shots 100 non-null values
dtypes: float32(4)

In [10]: df.apply(lambda x: x.values.byteswap().newbyteorder()).dtypes
Out[10]:
a float32
b float32
c float32
shots float32
dtype: object

在你这样做之后还要设置索引(例如,不要在构造函数中这样做)

df.set_index('shots',inplace=True)

关于python - 从 Pandas DataFrame 中提取多个非连续的索引值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18599579/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com