熊猫-按非唯一排序索引搜索

时间:2019-12-27 09:47:31

标签: python pandas

我有一个包含数百万行的pandas数据框。我需要通过index搜索那个is not unique。在我看来,.loc的实现是二进制搜索O(logn)(使用sorted index)。

问题是,这太慢了。有没有办法在恒定的时间O(1)中检索给定索引的所有行?也许可以使用某种groupby吗?后面的实现应该是一个哈希表,将索引作为键,并将行列表作为值。

示例:

RowIndex RowValue1 RowValue2 RowValue3 RowValue4
1        2         2         2         2
1        3         5         4         3
1        5         5         5         5
2        3         3         3         3
2        1         5         6         1

让我们假设RowIndex是一个排序索引。我想获取索引1的所有行。那将返回行#1, #2 and #3df.loc(1)

RowIndex RowValue1 RowValue2 RowValue3 RowValue4
1        2         2         2         2
1        3         5         4         3
1        5         5         5         5

问题是,此操作当前在O(logN)时间内完成。我需要以某种方式创建一个散列图,该索引将索引作为键存储为值作为行对象的列表。

1 => [Row(2, 2, 2, 2), Row(3, 5, 4, 3), Row(5, 5, 5, 5)]

这样,我将能够在恒定时间内获取所有行。

更新:

我尝试过df.groupby(df.index).agg(lambda x: list(x))来生成一个准结构,但是它花费的时间太长了。

0 个答案:

没有答案