Pandas系列中的索引值

6za6bjd0  于 2023-08-01  发布在  其他
关注(0)|答案(2)|浏览(103)

请考虑以下代码:

my_series = pd.Series(np.arange(3))

my_series[-1]

字符串
上面的代码片段在尝试检索值时生成Key Error
但是,当我们在创建pandas系列时指定自定义索引时,就会生成所需的输出。就像下面的代码:

my_series2 = pd.Series(np.arange(3), index = ['a', 'b', 'c']) 

my_series2[-1]


我想知道为什么两者之间会有微妙的差异?

laik7k3q

laik7k3q1#

我相信,当你使用默认索引时,调用my_series[-1]只是试图寻找index value-1,它不存在,因此KeyError。如果你有切片,例如。my_series[1:-1],pandas会把它解释为像正常列表一样寻找索引,这样就没问题了。
一旦将索引更改为字母,pandas就会将单个索引视为索引值(如果使用字符串)或位置值(如果使用数字)。
一般来说,当您想要使用数字索引时,建议使用.iloc(即位置索引)和.loc(当您想使用非数字索引时)。当使用默认索引时,如果你想看到典型的python功能,请坚持使用.iloc,因为.loc在切片时包含最后一个值(参见这里的解释)。
同样的问题被问到here,但没有被接受的答案。他们说这是一个不一致的地方,部分原因是当只使用[]时,很难分辨出你想要的是索引值还是位置值。这就是为什么最好使用.iloc.loc,这样您的意图就很清楚了。

3mpgtkmj

3mpgtkmj2#

第一个案子。创建系列时,使用RangeIndex。RangeIndex没有反向索引,只有单调整数范围。第二种情况使用Index(a,B,c)。你会得到很多方法和机会,你可以使用反向索引。你可以在这里阅读更多:RangeIndex Index

相关问题