python列表索引函数 python中列表索引超出范围怎么解决

Python 数据处理(二十四)—— 索引和选择 如果你想获取'A'列的第0和第2个元素,你可以这样做:
这也可以用.iloc获取,通过使用位置索引来选择内容
可以使用.get_indexer获取多个索引:
警告 :
对于包含一个或多个缺失标签的列表,使用.loc或[]将不再重新索引,而是使用.reindex
在以前的版本中 , 只要索引列表中存在至少一个有效标签,就可以使用.loc[list-of-labels]
但是现在,只要索引列表中存在缺失的标签将引发KeyError。推荐的替代方法是使用.reindex()。
例如
索引列表的标签都存在
先前的版本
但是,现在
索引标签列表中包含不存在的标签,使用reindex
另外,如果你只想选择有效的键,可以使用下面的方法,同时保留了数据的dtype
对于.reindex(),如果有重复的索引将会引发异常
通常,您可以将所需的标签与当前轴做交集 , 然后重新索引
但是,如果你的索引结果包含重复标签,还是会引发异常
使用sample()方法可以从Series或DataFrame中随机选择行或列 。
该方法默认会对行进行采样,并接受一个特定的行数、列数,或数据子集 。
默认情况下,sample每行最多返回一次,但也可以使用replace参数进行替换采样
默认情况下,每一行被选中的概率相等 , 但是如果你想让每一行有不同的概率,你可以为sample函数的weights参数设置抽样权值
这些权重可以是一个列表、一个NumPy数组或一个Series ,但它们的长度必须与你要抽样的对象相同 。
缺失的值将被视为权重为零 , 并且不允许使用inf值 。如果权重之和不等于1  , 则将所有权重除以权重之和,将其重新归一化 。例如
当应用于DataFrame时,您可以通过简单地将列名作为字符串传递给weights作为采样权重(前提是您要采样的是行而不是列) 。
sample还允许用户使用axis参数对列进行抽样 。
最后,我们还可以使用random_state参数为sample的随机数生成器设置一个种子 , 它将接受一个整数(作为种子)或一个NumPyRandomState对象
当为该轴设置一个不存在的键时,.loc/[]操作可以执行放大
在Series的情况下 , 这实际上是一个追加操作
可以通过.loc在任一轴上放大DataFrame
这就像DataFrame的append操作
由于用[]做索引必须处理很多情况(单标签访问、分片、布尔索引等),所以需要一些开销来搞清楚你的意图
如果你只想访问一个标量值,最快的方法是使用at和iat方法,这两个方法在所有的数据结构上都实现了
与loc类似,at提供了基于标签的标量查找,而iat提供了基于整数的查找 , 与iloc类似
同时,你也可以根据这些索引进行设置值
如果索引标签不存在 , 会放大数据
另一种常见的操作是使用布尔向量来过滤数据 。运算符包括:
|(or) 、 (and) 、 ~ (not)
这些必须用括号来分组,因为默认情况下,Python会将df['A']2df['B']3这样的表达式评估为df['A'](2df['B'])3  , 而理想的执行顺序是(df['A']2)(df['B']3)
使用一个布尔向量来索引一个Series ,其工作原理和NumPyndarray一样 。
您可以使用一个与DataFrame的索引长度相同的布尔向量从DataFrame中选择行
列表推导式和Series的map函数可用于产生更复杂的标准
我们可以使用布尔向量结合其他索引表达式,在多个轴上索引
iloc支持两种布尔索引 。如果索引器是一个布尔值Series ,就会引发异常 。
例如,在下面的例子中 ,  df.iloc[s.values, 1]是正确的 。但是df.iloc[s,1]会引发ValueError。

推荐阅读