iloc中指定行列表与使用切片的差异是什么?附示例解析
pandas iloc:行列表索引与切片索引的核心区别
1. 索引范围的本质差异
df.iloc[[3, 4], 1]:通过显式行号列表精准定位,会直接选取第3行和第4行(pandas采用0-based索引,即从0开始计数),无论这两行是否连续,只要在列表里的行号都会被选中。df.iloc[3:4, 1]:遵循Python左闭右开的切片规则,仅选取从第3行开始、到第4行之前的行——说白了就是只取第3行,不会包含第4行。
2. 返回结果的结构差异
两者的返回结构会根据选取的行/列数量变化,核心区别点:
- 用列表索引时,哪怕只选一行(比如
df.iloc[[3], 1]),返回的是DataFrame(列表属于二维索引标识); - 用切片索引选单行时(比如
3:4),返回的是Series。
举个实际例子更直观:
import pandas as pd data = {'A': [1,2,3,4,5], 'B': [10,20,30,40,50]} df = pd.DataFrame(data)
运行df.iloc[[3,4],1],输出:
3 40 4 50 Name: B, dtype: int64
运行df.iloc[3:4,1],输出:
3 40 Name: B, dtype: int64
3. 适用场景不同
- 行列表索引:适合选取不连续的特定行,比如需要提取第2、5、7行这类分散的行号时,直接把行号放进列表即可。
- 切片索引:适合选取连续的行范围,比如要提取从第1行到第10行,用
1:11比写一长串列表简洁得多。
内容的提问来源于stack exchange,提问作者variable
相关产品推荐
相关产品推荐

