gpt4 book ai didi

python - 导致 pandas KeyError 的大索引值

转载 作者:太空宇宙 更新时间:2023-11-03 14:47:05 24 4
gpt4 key购买 nike

我像这样用 UInt64Index 设置了一个数据框

df = pandas.DataFrame([[1,2,3],[4,5,9223943912072220999],[7,8,9]], columns=['a','b','c'])
df = df.set_index('c')
>>> df
a b
c
3 1 2
9223943912072220999 4 5
9 7 8

>>> df.index
UInt64Index([3, 9223943912072220999, 9], dtype='uint64', name=u'c')

现在尝试通过索引值访问元素适用于较小的值

>>> df.index[0]
3
>>> df.loc[3]
a 1
b 2
Name: 3, dtype: int64

但是尝试对大值做同样的事情会导致错误

>>> df.index[1]
9223943912072220999
>>> df.loc[9223943912072220999]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/u1/mprager/.virtualenvs/jupyter/local/lib/python2.7/site-packages/pandas/core/indexing.py", line 1373, in __getitem__
return self._getitem_axis(maybe_callable, axis=axis)
File "/home/u1/mprager/.virtualenvs/jupyter/local/lib/python2.7/site-packages/pandas/core/indexing.py", line 1626, in _getitem_axis
self._has_valid_type(key, axis)
File "/home/u1/mprager/.virtualenvs/jupyter/local/lib/python2.7/site-packages/pandas/core/indexing.py", line 1514, in _has_valid_type
error()
File "/home/u1/mprager/.virtualenvs/jupyter/local/lib/python2.7/site-packages/pandas/core/indexing.py", line 1501, in error
axis=self.obj._get_axis_name(axis)))
KeyError: u'the label [9223943912072220999] is not in the [index]'

我认为这可能是某种 dtype 问题,但即使我执行 df.loc[df.index[1]] 我也会遇到同样的错误。

这是在 python 2.7.9 上使用 pandas 0.22.0

最佳答案

可能是一个错误。 9223943912072220999 似乎太大而无法放入标准的 C 有符号长变量中,这也会导致 loc 出现问题。一种替代方法是使用 df.index.get_loc,获取索引,然后使用 iloc 作为基于位置的索引的索引器。

i = df.index.get_loc(9223943912072220999)
df.iloc[i]

a 4
b 5
Name: 9223943912072220999, dtype: int64

另一种选择是将索引作为对象数组处理 -

df.index = df.index.astype(object)

这允许你处理任意大的数字(基本上,任何你可以散列的东西现在都可以放在对象索引中)-

df.loc[9223943912072220999]

a 4
b 5
Name: 9223943912072220999, dtype: int64

请注意,就替代方案而言,这是最差的方案之一,而且性能可能较低。

关于python - 导致 pandas KeyError 的大索引值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48449805/

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