如何在DataFrame中周期性删除特定范围的行?
按固定块规则删除DataFrame指定行
你可以通过向量化计算行位置的方式高效处理100万行的DataFrame,避免循环操作带来的性能损耗,具体步骤如下:
- 计算每行所属的块:以40000行为一个块,用索引整除40000得到块编号
- 计算每行在块内的相对位置:用索引取余40000得到块内位置(0~39999)
- 筛选保留块内位置≥8000的行:也就是剔除每个块的前8000行(对应你说的1-based行号18000、4000148000等)
代码示例
import pandas as pd # 创建100万行的DataFrame(替换成你的实际数据) df = pd.DataFrame({'col1': range(1000000)}) # 添加辅助列计算块编号和块内位置 df['block_num'] = df.index // 40000 df['pos_in_block'] = df.index % 40000 # 筛选保留行并移除辅助列 result_df = df[df['pos_in_block'] >= 8000].drop(columns=['block_num', 'pos_in_block'])
说明
- 这种方法用pandas的向量化操作实现,处理100万行数据速度极快,远优于逐行循环删除
- 代码自动适配Python的0-based索引,完全匹配你描述的1-based行号删除规则
内容的提问来源于stack exchange,提问作者user_scc
相关产品推荐
相关产品推荐

