为何dataframe.iloc[1,5]触发越界错误而dataframe.iloc[[1,5]]正常?
为什么
dataframe.iloc[1,5]报错而dataframe.iloc[[1,5]]不报错? 这俩写法是完全不同的索引逻辑,搞清楚差异就明白问题所在了:
dataframe.iloc[1,5]的逻辑:这是二维位置索引,第一个参数指定行的位置,第二个参数指定列的位置。报错single positional indexer is out-of-bounds,说明你的DataFrame里没有第6列(iloc从0开始计数,数字5对应第6列),列的最大索引小于5,自然触发越界错误。dataframe.iloc[[1,5]]的逻辑:这是一维行位置索引,传入的列表[1,5]代表要提取的行位置,意思是取第2行和第6行的所有列。只要你的DataFrame行数足够(至少有6行,行索引最大不小于5),就不会报错——因为这里只操作行维度,完全没涉及列索引。
举个直观例子:假设你的DataFrame只有3列(列索引0、1、2),但有10行。那iloc[1,5]找第6列肯定不存在,直接报错;但iloc[[1,5]]取第2和第6行,这两行都存在,就能正常返回结果。
内容的提问来源于stack exchange,提问作者arwa eiad
相关产品推荐
相关产品推荐

