0

我有一个有几列的数据框。我想通过组合两个特定列的值来提取行,因此我使用该set_index()属性按这些列索引数据框。我想在这样做之后,对于给定的键组合,我将可以直接访问 (O(1)) 行。目前,情况似乎并非如此,需要相当长的时间才能进行df.ix[ix1,ix2]操作。

例子:

假设我有以下数据框:

In [228]:    df
Out[228]:
             ID1             ID2        score
752476   5626887150_0    5626887150_6    96
752477   5626887150_0    5626887150_7    95
752478   5626887150_0    5626887150_2    95
752479   5626887150_0    5626887150_8    93
752480   5626887150_0    5626887150_1    89
752481   5626887150_0    2142280814_5    88
752482   5626887150_0    5626887150_3    84
752483   5626887150_0    6625625104_5    82
752484   5626887150_0    2142280814_4    81

并说我想查看不同 ID1、ID2 组合中的分数列。为了轻松做到这一点,我将 ID1 和 ID2 设置为索引并获得以下结果:

In [230]: df = df.set_index(['ID1','ID2']) 
Out[230]:
                               score
ID1                 ID2 
5626887150_0    5626887150_6     96
5626887150_7                     95
5626887150_2                     95
5626887150_8                     93
5626887150_1                     89
2142280814_5                     88
5626887150_3                     84
6625625104_5                     82
2142280814_4                     81

现在我可以使用 ID1、ID2 组合(例如 )轻松访问我的数据df.ix['5626887150_0','5626887150_6'],这是真的。但是,它似乎不是 O(1) 访问。在大型数据帧上返回值似乎需要相当长的时间。

那么该方法到底在set_index()做什么呢?有没有办法强制 O(1) 访问数据?

4

0 回答 0