向DataFrame应用TextBlob返回字符而非TextBlob对象的问题排查
问题原因与解决方法
你看到的单个字符序列并不是代码把文本分词了,核心原因是Pandas的显示机制:TextBlob对象本身支持迭代(它的迭代逻辑是逐个返回文本里的字符),当Pandas展示DataFrame内容时,会自动展开可迭代类型的单元格内容,所以看起来像是被拆成了单个字符,但实际上newtext列里存储的还是完整的TextBlob对象。
可以用一行代码验证:
print(type(df['newtext'].iloc[0]))
运行后会输出<class 'textblob.blob.TextBlob'>,证明存储的对象是正确的。
如果想避免这种误导性的显示,或者更实用地使用TextBlob,有两种思路:
- 直接存储TextBlob处理后的结果,比如情感分析值、词性标注结果,而不是存储原始对象:
# 存储情感分析结果(极性和主观性) df['sentiment'] = df['text'].apply(lambda x: TextBlob(x).sentiment) # 存储词性标注 df['pos_tags'] = df['text'].apply(lambda x: TextBlob(x).tags) - 如果确实需要保留TextBlob对象,查看内容时可以手动把对象转为字符串:
print(df['newtext'].apply(str))
这样就能看到完整的文本内容,而不是被展开的字符序列。
内容的提问来源于stack exchange,提问作者SFW
相关产品推荐
相关产品推荐

