如何将pandas统计得到的词频结果拆分为独立的单词列表和频次列表
问题解决方案
首先你无需将value_counts()的返回结果转为字符串再拆分,该方法本身返回的就是索引为单词、值为对应频次的Pandas Series对象,直接提取索引和值即可得到目标列表:
import pandas as pd df = pd.read_csv(r'C:\Users\username\Downloads\file_to_analyse.csv') # 统计单词频次,直接得到Series结构的结果,不需要转成字符串 word_counter = df.short_description.str.split(expand=True).stack().value_counts() # 直接提取两个列表 words = word_counter.index.tolist() amount = word_counter.values.tolist()
上述方法不会出现字符串拆分的各类格式问题,执行效率也更高。
字符串版本修正方案
如果你已经生成了字符串格式的word_counter必须处理,你原来的逻辑问题在于移除数字后没有按单词拆分,也没有清理多余的换行、空格。可以按行拆分后逐行提取:
word_list = [] amount = [] # 按换行拆分每一组「单词-频次」对 for line in word_counter.strip().split('\n'): parts = line.split() # 最后一个元素是频次,前面的内容拼接为单词(适配单词本身带空格的场景) amount.append(int(parts[-1])) word_list.append(' '.join(parts[:-1]))
内容的提问来源于stack exchange,提问作者Jesper Boenigk
相关产品推荐
相关产品推荐

