如何将向量化DataFrame导出为关键词逐行排列的CSV文件
问题原因
你现在生成的词频统计DataFrame是单行宽表结构:所有关键词是列名,唯一一行存对应词频值,导出CSV自然会出现关键词全在表头、词频挤在第二行的情况。本质是CountVectorizer输出的单文本词频矩阵是行向量,直接转DataFrame没有做结构转换。
修复方案
不需要改动前面的日志预处理、分词向量化逻辑,只需要调整DataFrame构造部分的代码,把宽表转成「关键词-词频」的两列竖表即可:
import re import pandas as pd from sklearn.feature_extraction.text import CountVectorizer from sklearn.feature_extraction.text import ENGLISH_STOP_WORDS def removeNumbers(list): #doing something def processFiles(filename): #doing something def readFile(fileName): #doing something # Build our text processFiles("log.txt") text = readFile("processedFile.txt") vectorizer = CountVectorizer() matrix = vectorizer.fit_transform([text]) # 替换原有的counts构造逻辑 counts = pd.DataFrame( matrix.toarray().T, # 转置词频矩阵,从1行N列转为N行1列 index=vectorizer.get_feature_names_out(), columns=["frequency"] ).reset_index(names="keyword") # 导出时加index=False避免生成多余的行号列 counts.to_csv("keywords_count.csv", index=False)
导出效果
最终生成的keywords_count.csv就是你要的格式:每个关键词单独占一行,第一列为关键词内容,第二列为对应词频,示例如下:
keyword,frequency accept,1 accepted,1 action,1 add,1 address,18 agent,1 allocated,28 api,8 api_action_sender,1 api_reader,6 ...
内容的提问来源于stack exchange,提问作者Ujjawal Pandey
相关产品推荐
相关产品推荐

