You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中使用TfidfVectorizer处理多份txt文件生成单个DataFrame的方法

修正后可实现需求的完整代码
import os
import numpy as np 
import pandas as pd 
from sklearn.feature_extraction.text import TfidfVectorizer

# 1. 配置路径参数
input_dir = "E:/train/r/"  # txt文件所在目录
output_path = "E:/train/tfidf_result.csv"  # 最终DataFrame导出路径

# 2. 读取所有txt文件的内容
file_content_list = []
file_names = []
for file in os.listdir(input_dir):
    if file.endswith('.txt'):
        file_path = os.path.join(input_dir, file)
        # 读取txt内容,编码可根据实际文件调整为gbk、utf-8-sig等
        with open(file_path, 'r', encoding='utf-8', errors='ignore') as f:
            content = f.read()
        file_content_list.append(content)
        file_names.append(file)

# 3. TF-IDF向量化处理
tfidf_vectorizer = TfidfVectorizer(use_idf=True)
tfidf_matrix = tfidf_vectorizer.fit_transform(file_content_list)

# 4. 生成合并的DataFrame
# 现有结构:行是特征词,列是每个txt文件,值是对应特征词在该文件的TF-IDF值
df = pd.DataFrame(
    tfidf_matrix.T.todense(),
    index=tfidf_vectorizer.get_feature_names_out(),
    columns=file_names
)
# 可选:按首个文件的TF-IDF值降序排列,可自行修改排序规则
df = df.sort_values(by=df.columns[0], ascending=False)

# 5. 导出到指定目录
df.to_csv(output_path, encoding='utf-8-sig')

关键调整说明
  • 补充了os模块导入,统一配置路径参数,方便后续修改调整
  • 修复了原代码核心错误:不再直接传入文件名列表做向量化,改为逐个读取txt文件的实际文本内容传入模型
  • 调整DataFrame列名为对应txt文件名,方便后续匹配数据来源
  • 用get_feature_names_out()替代旧版接口get_feature_names(),适配不同版本的scikit-learn,兼容性更好
  • 增加了编码容错处理,避免读取特殊字符时报错
  • 补充了to_csv导出步骤,直接输出到指定路径

如果需要「行对应文件、列对应特征词」的DataFrame结构,仅需修改DataFrame生成部分的代码即可:

df = pd.DataFrame(
    tfidf_matrix.todense(),
    index=file_names,
    columns=tfidf_vectorizer.get_feature_names_out()
)

内容的提问来源于stack exchange,提问作者uu9254

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 22:54:06