所以我正在将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会很好。
答案 0 :(得分:2)
您只需要将列转换为string
,因为到目前为止您只有list
不能接受的WordCloud
个字符串。
text = WordCloud().generate(df['col1'].to_string())
答案 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'
如果对多个列进行了此操作,则在链接它们之前,必须将每个列值附加在一起。