2016-03-12 60 views
1

给定一组索引的内连接列表的最快方式是什么?内连接列表中给定索引的两个列表

例:

[[1,2,3], 
[1,3,3], 
[1,2,3]] 

[[1,2,4], 
[1,3,4], 
[1,3,5]] 

加入,如果指数在0和1的比赛

结果:

[[1,2,3,4], 
[1,3,3,4], 
[1,3,3,5], 
[1,2,3,4]] 

实现这种琐碎的方法似乎是太慢了,什么是最快的方法做?

回答

1

好,你可以使用pandas为:

>>> import pandas as pd 
>>> d0 = pd.DataFrame([[1,2,3],[1,3,3],[1,2,3]]) 
>>> d1 = pd.DataFrame([[1,2,4],[1,3,4],[1,3,5]]) 
>>> pd.merge(d0,d1, on=[0,1]) 
    0 1 2_x 2_y 
0 1 2 3 4 
1 1 2 3 4 
2 1 3 3 4 
3 1 3 3 5 

它应该做的工作不是太糟糕,因为它是一个科学图书馆专为。但由于我不知道来源,我不能说它的复杂性。

>>> def test(): 
... pd.merge(d0,d1, on=[0,1]) 
>>> timeit.timeit(test, number=1000) 
1.9183850288391113 

在我的电脑上。