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



我有一个熊猫系列列表。现在我需要一个将所有列表串联起来的大列表。有了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()但没有任何效果。它不会将其展平为一维数组。有人知道我如何有效地获得所需的解决方案吗?

对我来说工作:

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]

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

最新更新