2015-11-05 42 views
2

我有以下系列:高效串聯

s = pd.Series([['a', 'b'], ['c', 'd'], ['f', 'g']]) 
>>> s 
0 [a, b] 
1 [c, d] 
2 [f, g] 
dtype: object 

什麼是最簡單的 - 最好是矢量 - 的方式來連接所有列出的系列,讓我得到:

l = ['a', 'b', 'c', 'd', 'f', 'g'] 

謝謝!

+3

's.sum()'是最簡單的矢量化的方式,但它可能不是非常有效... –

+0

真棒!對我來說足夠好! thanx很多 –

+0

@ajcr應該是一個答案! –

回答

2

嵌套的列表理解應該快得多。

>>> [element for list_ in s for element in list_] 
    ['a', 'b', 'c', 'd', 'f', 'g'] 

>>> %timeit -n 100000 [element for list_ in s for element in list_] 
100000 loops, best of 3: 5.2 µs per loop 

>>> %timeit -n 100000 s.sum() 
100000 loops, best of 3: 50.7 µs per loop 

直接訪問列表的值更快。

>>> %timeit -n 100000 [element for list_ in s.values for element in list_] 
100000 loops, best of 3: 2.77 µs per loop 
+0

非常感謝,很好的回答。 –