You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas中每5列一组删除第3-5列的单行实现方法

pandas 按循环规律批量删列单行方案

核心实现

针对每5列一组、仅保留每组前2列的需求,不需要分步调用drop,直接通过列位置的模运算做筛选即可,单行代码如下:

df1 = df.iloc[:, [i for i in range(df.shape[1]) if i % 5 in (0, 1)]]

如果偏好使用drop方法删除冗余列,对应的单行写法为:

df1 = df.drop(columns=df.columns[[i for i in range(df.shape[1]) if i % 5 in (2, 3, 4)]])

逻辑对比

  • 原分步写法的问题:每次执行drop后剩余列的索引会重新排列,因此步长需要从5依次调整为4、3,逻辑绕且容易因总列数不匹配出现索引偏移错误
  • 单行实现的逻辑:直接基于原始列的全局位置判断,列索引对5取余结果为0、1的就是每组前2列的有效数据,其余为冗余列,无论总列数是否为5的整数倍都能正确适配,代码更简洁、鲁棒性更强。

内容的提问来源于stack exchange,提问作者Kevin Coleman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 17:01:02