pandas 系列列表的有效串联

efficient concatenation of lists in pandas series

我有以下系列:

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']

谢谢!

嵌套列表理解应该快得多。

>>> [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

我不是在计时或测试这些选项,但有新的 pandas 方法 explode,还有 numpy.concatenate