2014-04-11 133 views
-2

基本上,問題是「熊貓有類似SQL的多重索引嗎?」大熊貓,快速訪問(多)列值

詳細地說, 我想添加(多)我的DataFrame的索引,以便在O(1)時間訪問具有給定列值的記錄。

下面的腳本執行我所需要的,但不是在O(1)時間:

import pandas as pd 
import numpy as np 
df = pd.DataFrame([[0, 1, 0],[0, 0, 0]], columns=['a', 'b', 'c']) 
df[np.logical_and(df['a'] == 0, df['b'] == 1)] 

我不知道是否有建立數據框的(多)指數的方式(比如說在O(N)時間),然後在O(1)時間訪問記錄。

回答

2

這是一個相當不錯的答案,但萬一它有用,我會發帖。

您可以將多指標的數據幀與

df.set_index(['a', 'b'], inplace=True) 

我不知道時間複雜度爲基礎實現的。

你可以在一個數據幀具有多指標與ix方法來訪問一行如下:

df.ix[(0, 1)] 

我希望這是你在找什麼。如果不是,請道歉。

+0

這就是你想要做的,我認爲這會更好,如果你使用OP的例子:) –

+0

好點。謝謝。編輯。 –

+0

另一種選擇是在這裏使用loc(而不是ix),但很多非常重要! :) –