pandas - 导致python挂起的过滤选项 - 如何调试?
问题描述
我正在预处理大型数据集,以使它们为集群操作做好准备。我有一个脚本,它从 CSV 读取数据并对丢失的数据、错误值等执行各种检查。到目前为止,一切都按预期工作。不过,当我昨天运行脚本时,它开始坚持一个简单的过滤操作。源数据没有改变,但不知何故处理无法越过这条线。我通过将以下代码行移动到另一个文件来隔离问题,并且观察到相同的问题:
import pandas as pd
df = pd.read_csv('data1.csv',index_col=0)
# Get list of columns of interest for first check
columns = [col for col in df.columns if 'temp' in col]
# Find indices where any value of a column of interest has a value of 1
indices = list(df[df[columns]==1].dropna(how='all').index)
这以前运行良好,可以正确识别“列”中带有“1”标志的索引。现在(并且没有更改代码或源数据),它挂在索引行上。我进一步将其分解以识别具体问题:df[columns]==1
运行良好,但在此条件下抓取df
过滤器 ( df[df[columns]==1]
) 是挂起的行。
如何解决问题所在?由于上次工作时我没有进行任何更改,所以我很困惑。可能是什么原因?提前感谢您的任何提示。
解决方案
编辑:下面的方法似乎要快得多并解决了问题:
indices = df[(df[columns]==1).any(1)].index 在整个 df 的一个子集上进行测试时,它在 0.015 秒内完成了任务,而之前的方法需要 15.0 秒。
推荐阅读
- java - 如何选择玩家加入游戏并开始游戏
- python - 将 Jupyter 笔记本文件从纯文本转换为 python
- c++ - 在构造函数中使用原始指针以立即将其包装在智能指针中是否被认为是不好的做法?
- git - 来自 Jenkinsfile 的 git push 标签失败
- r - 每年变化的范围内的循环功能
- react-native - 我的 React-Native 应用程序无法在模拟器中启动
- ionic-framework - 如何在点击外部或硬件后退按钮时实现离子模式自动关闭
- node.js - NodeJS 监控网站(工作线程?/多进程?)
- php - WooCommerce 在 php 中更新产品
- javascript - React 中特定数组项的非常简单的状态更改