我有一个有几列的数据框。我想通过组合两个特定列的值来提取行,因此我使用该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) 访问数据?