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

Python中将多列TF-IDF矩阵合并存储到单个CSV文件的实现方案

实现方法

首先修正你现有代码的问题:你当前共用了同一个TfidfVectorizer实例,每次调用fit_transform都会覆盖之前学习到的词汇表,会导致三个列的TF-IDF计算逻辑异常,建议每个列单独实例化向量化器。

实现步骤如下:

  • 对每个来源列单独计算TF-IDF后,为特征名加上对应列名的前缀,避免不同列出现相同词汇导致列名重复
  • 将每个TF-IDF稀疏矩阵转为DataFrame格式
  • 按行拼接所有TF-IDF特征的DataFrame,可按需选择是否保留原始文本列一起导出
  • 最终输出为CSV文件

完整可运行代码:

import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer

# 读取原始数据
data = pd.read_excel(r"C:\Users\amgup\Downloads\classification\Model_Dataset.xlsx", usecols=['Category','Title','Description'])

# 每个列单独实例化向量化器,避免词汇表覆盖
tfidf_category = TfidfVectorizer()
tfidf_title = TfidfVectorizer()
tfidf_desc = TfidfVectorizer()

# 分别计算三个列的TF-IDF
matrix1 = tfidf_category.fit_transform(data['Category'].values.astype(str))
matrix2 = tfidf_title.fit_transform(data['Title'].values.astype(str))
matrix3 = tfidf_desc.fit_transform(data['Description'].values.astype(str))

# 转为DataFrame并添加来源列前缀,明确列的所属
df_category = pd.DataFrame(matrix1.toarray(), columns=tfidf_category.get_feature_names_out()).add_prefix('Category_')
df_title = pd.DataFrame(matrix2.toarray(), columns=tfidf_title.get_feature_names_out()).add_prefix('Title_')
df_desc = pd.DataFrame(matrix3.toarray(), columns=tfidf_desc.get_feature_names_out()).add_prefix('Description_')

# 合并所有特征,若需要保留原始文本列,可把第一个参数改为 [data, df_category, df_title, df_desc]
final_df = pd.concat([df_category, df_title, df_desc], axis=1)

# 存储为CSV,index=False表示不导出行索引
final_df.to_csv('tfidf_merged_result.csv', index=False, encoding='utf-8-sig')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 15:06:04