切片(Slicing)是快速截取序列部分元素的语法,支持字符串、列表、元组,更核心的是适配 pandas 的 Series 和 DataFrame——对应 Excel 里“选中部分行/列”,但更灵活高效。
一、切片核心语法
核心格式:对象[start:stop:step]
-
start:起始索引(包含,默认 0);
-
stop:结束索引(不包含,必须指定或用 : 省略);
-
step:步长(默认 1,负数反向);
-
关键:左闭右开(取得到 start、取不到 stop),索引从 0 开始。
简化写法(高频):
| 语法 | 含义 | 示例 [1,2,3,4,5] |
|---|---|---|
| 对象[start:] | 从 start 取到末尾 | [2:] → [3,4,5] |
| 对象[:stop] | 从开头取到 stop-1 | [:3] → [1,2,3] |
| 对象[:] | 取全部(复制序列) | [:] → [1,2,3,4,5] |
| 对象[::step] | 按步长取,负步长反向 | [::2]→[1,3,5];[::-1]→[5,4,3,2,1] |
二、Python 基础对象切片
1. 列表切片
2. 字符串切片
三、pandas 核心切片
准备数据:
1. 筛选行
2. 筛选列
3. 同时筛行和列(矩形区域,类比 Excel A2:C4)
4. Series 切片
四、核心应用场景
1. 预处理:取少量数据测试公式
2. 快速提取 Top 数据
3. 拆分训练集/测试集
五、常见误区
-
索引从 0 开始:df.iloc[0] 是第一行,不是 df.iloc[1];
-
左闭右开:df.iloc[1:4] 取 1,2,3,不含 4;要取到 4 得写 1:5;
-
df[1:3] 是筛行不是筛列;筛列要用 df.iloc[:,1:3] 或 df[[‘列名’]];
-
反向截取必须写 step=-1:df.iloc[::-1] 才是反转,df.iloc[-1:] 只是取最后一行;
-
切片返回副本,改切片结果不影响原 df。
六、总结
-
基础格式 [start:stop:step],左闭右开,索引从 0 开始;
-
pandas 用 iloc[行范围, 列范围] 精准切片,类比 Excel 选矩形区域;
-
核心用途:数据筛选、拆分、预处理测试、提取关键数据;
-
高频:合并后截部分行验证、新增列前切片测逻辑、拆分训练/测试集。