词云和列表列表

问题描述

我正在尝试使用以下数据创建 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