从数据帧中查找值

时间:2014-04-27 05:57:32

标签: python pandas

我正在实现与MS excel数据透视表一样的数据透视表模块。 我正在使用pandas数据帧模块。

反正..

我想知道如何通过键从数据框中查找值。

经过的时间至关重要。

请填写下面的示例代码。

import pandas as pd

def getTestDataFrame():
    data=[]

    # generating 10000000 records
    for i in range(10000):
        for j in range(1000):
            data.append( (i ,j, i+j) )


    dataFrame=pd.DataFrame( data, columns=["key_1", "key_2", "myvalue"] )

    # setting index to key columns
    dataFrame=dataFrame.set_index(['key_1','key_2'])

    # data sample
    print dataFrame.head()

    return dataFrame



if __name__ == "__main__":

    myDataframe=getTestDataFrame()

    for i in range(10000):
        for j in range(1000):
            key1, key2= i, j
            '''
            how can i lookup "myvalue" column value 
              from "myDataframe" by key columns("key_1", "key_2")?
            '''
            # elapsed time is critical
            # please complete my code

1 个答案:

答案 0 :(得分:1)

在这种情况下,正确的pandas查找语法是:

if __name__ == "__main__":

    myDataframe=getTestDataFrame()

    for i in range(10000):
        for j in range(1000):
            key1, key2= i, j

            myvalueOut = myDataframe.loc[key1,key2]['myvalue']

不幸的是,我对你的速度问题说得太多了; pandas需要花费任何时间来进行查找,我无法控制它。

但是,如果pandas查找对您来说仍然运行得太慢,那么您可能尝试的另一种替代数据结构(而不​​是pandas)将是nested dictionary,您将实现key1将涵盖第一级嵌套,key2将覆盖第二级。虽然我不太了解熊猫如何在内部工作,但我很确定我之前已经读过Python词典基本上只是hash tables,这意味着Python的查找时间字典应该总是O(1),即最快的。