问题描述
我正在尝试使用以下数据创建 wordcloud:
my list= [[],[],['EMF'],['body'],['water','juice'],['What','are','u','doing'],['EVENT'],['christmas'],['shalala'],['happy'],[]]
一般我会
import numpy as np
import pandas as pd
from PIL import Image
from wordcloud import WordCloud,STOPWORDS,ImageColorGenerator
import matplotlib.pyplot as plt
corpus = " ".join(x for x in my_list)
df_wordcloud = WordCloud(background_color='white',max_font_size = 50).generate(corpus)
plt.imshow(df_wordcloud,interpolation='bilinear')
plt.axis("off")
plt.show()
但这次我得到了错误:
类型错误:序列项 0:预期的 str 实例,找到列表
您知道如何从列表列表中创建 wordcloud 吗?
解决方法
执行 " ".join(x for x in my_list)
等效于 " ".join(my_list)
,它试图将所有子列表连接在一起,从而导致您看到的错误。
相反,您希望先将这些内部列表“扁平化”,然后将它们转换为字符串:
corpus = " ".join(" ".join(x) for x in my_list)
甚至:
corpus = " ".join(map(" ".join,my_list))
,
让我们试试explode
s = pd.Series(l).explode().dropna()
Out[195]:
19 EMF
20 body
25 water
25 juice
26 What
26 are
26 u
26 doing
34 EVENT
35 christmas
37 shalala
38 happy
dtype: object