temp = pd.Series(np.random.randint(1, 10, 5), index=['John', 'Joe', 'Bob', 'Alice', 'Kris'])
temp[-1]

这输出与"Kris"相关的值 然而,当我这样做时:

temp2 = pd.Series(['John', 'Joe', 'Bob', 'Alice', 'Kris'], index=[5, 6, 7, 8, 9])
temp2[-1]

它会抛出一个关键错误

我有一个简短的 idea ,即当自定义索引为非integer类型时,Pandas会在内部执行索引,但我在这里不明白的是负索引是如何工作的?-1是否本质上意味着Pandas正在引用自定义索引列表,然后获取"-1"或最后一个元素,即Kris,然后将"Kris"作为标签传递给索引?

我确实知道在索引中将单个整数视为标签,那么这是如何工作的呢?而且,仅适用于类型为非integer的自定义索引;我在这里错过了什么?

推荐答案

这种混合类型的索引可能不应该存在,而且绝对不可靠(it will actually be removed in future versions).

明确地说,使用iloc进行位置索引:

temp2.iloc[-1]

输出:'Kris'

why does temp2[-1] fail?

如果您有一个整指数,则可能有负值:

temp3 = pd.Series(['John', 'Joe', 'Bob', 'Alice', 'Kris'], index=[5, -1, 7, 8, 9])
temp3[-1] # 'Joe'

Python相关问答推荐

Python plt.text中重叠,包adjust_text不起作用,如何修复?

计算相同形状的两个张量的SSE损失

删除最后一个pip安装的包

如何避免Chained when/then分配中的Mypy不兼容类型警告?

查找两极rame中组之间的所有差异

在线条上绘制表面

如何在solve()之后获得症状上的等式的值

如何在Python脚本中附加一个Google tab(已经打开)

基于索引值的Pandas DataFrame条件填充

所有列的滚动标准差,忽略NaN

无法在Docker内部运行Python的Matlab SDK模块,但本地没有问题

解决调用嵌入式函数的XSLT中表达式的语法移位/归约冲突

Python全局变量递归得到不同的结果

基于多个数组的多个条件将值添加到numpy数组

巨 Python :逆向猜谜游戏

在numpy数组中寻找楼梯状 struct

freq = inject在pandas中做了什么?''它与freq = D有什么不同?''

如何用FFT确定频变幅值

替换包含Python DataFrame中的值的<;

EST格式的Azure数据库笔记本中的当前时间戳