python - 从 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 行?
提前致谢!
解决方案
您可以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]]]
推荐阅读
- google-analytics - Google Analytics 目标未捕获所有事件
- image - 没有这样的图像:docker.io/openshift/origin-node-problem-detector:v3.11.0
- html - 自动填充(登录凭据)在 IE11 和 Edge 中不起作用
- coq - 自然数列表的拆分
- ios - iOS 中的 Firebase 身份验证以及 Swift 5 的最新更新
- python - 使用 pandas python 在 excel 文件中获取不相关的日期并创建标题并添加评论,例如“日期不相关”
- reactjs - 部署到 azure 应用服务时反应无效的主机头错误
- python - 在 Python 中将两个空列表之间的所有列表(字符串列表)合并为一个列表
- loopbackjs - 模型中的环回数据源特定配置
- excel - 如何在 Wscript.Shell + cmd.exe 中使用变量?