从数据框中查找值

0 投票
1 回答
2154 浏览
提问于 2025-04-18 04:26

我正在实现一个类似于微软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 个回答

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的查找速度还是太慢了,可以尝试用一种替代的数据结构,那就是嵌套字典。你可以这样实现:key1用来表示第一层嵌套,key2用来表示第二层嵌套。虽然我对pandas的内部工作原理了解不多,但我记得之前看到过,Python的字典基本上就是哈希表,这意味着Python字典的查找时间应该总是O(1),也就是最快的速度。

撰写回答