在列中选择大量数据点

Posted

技术标签:

【中文标题】在列中选择大量数据点【英文标题】:Selecing a large number of data points in column 【发布时间】:2015-12-02 20:01:07 【问题描述】:

我有一个DataFrame,有 6 列和超过 2600 万行,名为 data

id, redshift, treeID
2,  0.0,      100000
5,  0.0,      340000
...
39495, 0.0,   500000

我还有一个 listtreeID 有 600,000 个条目:

id = [100000,490000, ... 500000]

我想创建一个新的list,只有data 中的treeIDs 等于list 中的ids。我正在尝试的代码是

list = []
for x in id:
    transition = data[data['treeID'] == x]
    list.append(transition)

然后我会使用 pandas.concat([list,0]) 来合并所有不同的数组。

但是,这非常慢,大约需要 3 个小时才能浏览此列表,而我有 60 个这样的文件。有没有办法加快这个过程?

我曾考虑将初始数据文件分成几个较小的DataFrame,然后将其并行化,但这似乎是一种糟糕的形式。

是否有更好的方法或者是处理这些大型数据集的最佳方法?

【问题讨论】:

【参考方案1】:

还有

transition = data[data['treeId'].isin(id)]

【讨论】:

这正是我想要的!现在大约需要 20 秒,而不是 3 小时。

以上是关于在列中选择大量数据点的主要内容,如果未能解决你的问题,请参考以下文章

R - 在列中查找模式并替换它(更有效的解决方案)

在列中显示终端输出以有效地查看更多输出

在列中显示两个不同日期的数据

Sencha EXT JS datagrid滚动条专门在列上?

大量数据,尝试替换一列中的分隔符但不是所有分隔符

用于在列1中选择与第2列中的两个模式之一匹配的值对的SQL查询