【问题标题】:Jupyter crashes while deleting many rows from Panda data series从 Panda 数据系列中删除多行时 Jupyter 崩溃
【发布时间】:2019-09-15 22:26:50
【问题描述】:

我在 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 行?

提前致谢!

【问题讨论】:

    标签: python pandas jupyter-notebook


    【解决方案1】:

    您可以用一个衬垫替换您的 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]]]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 2012-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-21
      相关资源
      最近更新 更多