将可变长度的熊猫系列列表转换为一维数组

时间:2018-08-10 17:52:55

标签: python arrays pandas numpy

我有一系列的熊猫清单。现在,我需要一个包含所有列表的大列表。使用df.msg.values,我得到的是这样的东西:

array([list(['hi']), list(['hi', 'cat', 'dog']),  list(['smoke', 'red']),...)

现在输出应为如下的numpy数组:

['hi', 'hi', 'cat', 'dog', 'smoke', 'red',...]

我的工作解决方案是将所有列表连接在一起的for循环。

tok = tokenized.msg.dropna()
1darr= np.array([])
for m in tok :
    1darr = np.concatenate([1darr, m])

由于np.concatenate()可能会变慢,因此我尝试了np.ravel()np.flatten()的数百万行,但没有任何效果。它不会将其展平为一维数组。有人知道我如何才能有效地获得所需的解决方案吗?

2 个答案:

答案 0 :(得分:0)

为我工作:

a = np.concatenate(df['msg']).tolist()
print (a)
['hi', 'hi', 'cat', 'dog', 'smoke', 'red']

或者:

from  itertools import chain  

a = list(chain.from_iterable(df['msg']))
print (a)
['hi', 'hi', 'cat', 'dog', 'smoke', 'red']:

或者:

a = [y for x in df['msg'] for y in x]

答案 1 :(得分:0)

您应该能够简单地运行np.array(df['msg'].sum())