如何将标记化的数据帧转换为字符串以生成wordcloud

时间:2018-12-03 03:36:17

标签: python pandas

所以我正在将Excel文件读取到数据框,然后对其进行规范化(小写,停用词..etc)

现在,我的数据框具有来自excel文件的多个列,但只有我需要的列,其外观类似于以下内容。我必须将其标记化。

df ['col1']

0 [this, is , fun, interesting]
1 [this, is, fun, too]
2 [ even, more, fun]

我还有更多类似的列,例如df ['col2']等。

现在我想生成一个词云

from wordcloud import WordCloud
text = WordCloud().generate(df['col'])
plt.imshow(text)
plt.axis("off")
plt.show()

我正在尝试生成wordcloud,但是这显然没有效果,因为单词云显然需要一个字符串。如何将整个数据框转换为字符串?

我想将整个数据帧转换为字符串,然后生成一个wordcloud,但是如果不可能,那么每列至少有一个wordcloud会很好。

2 个答案:

答案 0 :(得分:2)

您只需要将列转换为string,因为到目前为止您只有list不能接受的WordCloud个字符串。

text = WordCloud().generate(df['col1'].to_string())

您的输出图像是 enter image description here

答案 1 :(得分:0)

您应该首先考虑是否正在正确处理数据,这似乎违反了将其标记化然后再将它们重新组合在一起的目的。

如果仍然需要这样做,则可以从列中获取值,并使用Python标准模块库中的chain将它们链接在一起,然后将它们连接起来以获取所有单词的字符串表示形式。

import pandas as pd
from itertools import chain

df = pd.DataFrame({'col1':[['this', 'is' , 'fun', 'interesting'],['this', 'is', 'fun', 'too'],['even','more']]})
word_list = list(chain.from_iterable(df.col1.values))
words = ' '.join(word_list)

words
>>'this is fun interesting this is fun too even more'

如果对多个列进行了此操作,则在链接它们之前,必须将每个列值附加在一起。