首页 > 解决方案 > 从 Panda 数据系列中删除多行时 Jupyter 崩溃

问题描述

我在 Windows 10 上本地使用 Jupyter 笔记本来拥有一个名为 pop_data 的 Pandas 数据框,该数据框由 4 列和超过 450,000 行组成。我正在尝试从中删除大约 400,000 行(要删除的行的索引来自名为 deleteTimes 的列表)。

for IndexOfRowToDelete in deleteTimes:
    pop_data= pop_data.drop([pop_data.index[IndexOfRowToDelete]]) 

这会在 CMD 行中不断返回 302 GET 错误,并为我中断 Jupyter(在此之后在 Jupyter 中执行命令将不再起作用 - 我必须重新启动笔记本)。我想知道这个问题是否因为我尝试执行的操作的大小太大而出现?我在文档中没有找到任何说明会出现这种情况的内容,但这是有道理的。

有谁知道它的原因?有什么办法可以解决这个问题,并在不破坏 Jupyter 的情况下删除所有 400,000 行?

提前致谢!

标签: pythonpandasjupyter-notebook

解决方案


您可以for用一个衬垫替换循环:

pop_data= pop_data.drop(pop_data.index[deleteTimes], axis=0) 

或者,由于您知道要删除大约 90% 的数据帧,因此您可以恢复该过程,并将要保留的行重新分配给数据帧,即

pop_data=pop_data.loc[pop_data.index[[el for el in range(len(pop_data.index)) if el not in deleteTime]]]

推荐阅读