2015-11-05 3 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()' это самый простой способ vectorised, но это, вероятно, не очень эффективно ... –

+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

Большое спасибо, отличный ответ. –

Смежные вопросы