Python 负索引差异

标签 python pandas

我正在使用 python 3.6,pandas 24.2 并遇到了一个差异。

>>> x = pd.Series(range(3))
>>> x[-1]

>>> x = pd.Series(range(3), index=[0,1,2])
>>> x[-1]

两者都会产生错误
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/conda3/ml4t/lib/python3.6/site-packages/pandas/core/series.py", line 868, in __getitem__
    result = self.index.get_value(self, key)
  File "/opt/conda3/ml4t/lib/python3.6/site-packages/pandas/core/indexes/base.py", line 4375, in get_value
    tz=getattr(series.dtype, 'tz', None))
  File "pandas/_libs/index.pyx", line 81, in pandas._libs.index.IndexEngine.get_value
  File "pandas/_libs/index.pyx", line 89, in pandas._libs.index.IndexEngine.get_value
  File "pandas/_libs/index.pyx", line 132, in pandas._libs.index.IndexEngine.get_loc
  File "pandas/_libs/hashtable_class_helper.pxi", line 987, in pandas._libs.hashtable.Int64HashTable.get_item
  File "pandas/_libs/hashtable_class_helper.pxi", line 993, in pandas._libs.hashtable.Int64HashTable.get_item
KeyError: -1

尽管
>>> x = pd.Series(range(3), index=['a','b','c'])
>>> x[-1]
2

与任何其他形式的索引一起使用都很好。它们是相同的数据结构,但添加某些类型的索引允许负索引,而其他索引则不允许?

最佳答案

要使用负索引,您可以使用:

x.iloc[-1]

这适用于所有情况。

是的,该错误是由@a-arnold 提到的一致性问题引起的。

由于索引 []必须处理很多情况,我们不能总是使用这样的索引。

当您将自定义索引设置为字符串时,负索引会起作用,因为它与整数索引不冲突。

Indexing and selecting data — pandas 1.0.3 documentation对 Pandas 中的索引和选择给出了很好的想法。

关于Python 负索引差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61435459/

相关文章:

python - 元素不再附加到 DOM 和超时异常

pandas - 使用 pandas 使用另一列中的值添加新列

python - Pandas 返回不一致的列值计数

python - 根据星期几将 Pandas 数据框分成两部分

python - 如何将结果仅写入测试套件selenium中的一个文件

python - Boto ec2创建磁盘需要很长时间才能创建 - Python

python - 可以使用 Python 在 Windows 证书存储中安装 exe 文件 pfx 文件

python - Pandas 寻找局部最大值和最小值

python - 将纪元时间转换为 Pandas 数据框中的格式化日期字符串

python - 在 Pandas 的数据框中创建一个组