寻找内存高效的大型DataFrame行删除实现方法
Pandas 原地删除DataFrame行的解决方案
- 你对
df = df.iloc[purge_threshold:]的内存表现理解存在一定偏差:pandas中行连续切片默认返回的是原DataFrame的视图,仅当对切片内容进行修改触发写时复制机制时,才会生成完整的新副本。但如果你需要完全避免临时对象生成,实现和列表del list[:n]一致的原地修改效果,可以使用以下方法: - 核心实现方式:调用
drop方法并传入inplace=True参数,直接在原DataFrame实例上删除指定行,代码示例如下:
# 直接删除前purge_threshold行,不会生成新的DataFrame实例 df.drop(df.index[:purge_threshold], inplace=True)
- 注意事项:如果你的DataFrame存在重复索引,操作前需要先确认
df.index[:purge_threshold]选中的是需要删除的行范围,避免出现误删的情况。 - 长时间运行场景的额外优化:每次完成数据清理后,可以手动调用垃圾回收接口及时释放闲置内存,降低内存占用波动:
import gc gc.collect()
内容的提问来源于stack exchange,提问作者Allan Xu
相关产品推荐
相关产品推荐

