从数据框中查找值
我正在实现一个类似于微软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),也就是最快的速度。