我正在实现与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
答案 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),即最快的。