我有一个熊猫系列列表。现在我需要一个将所有列表串联起来的大列表。有了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())
.