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

如何在Pandas DataFrame中按词频移除出现恰好5次的列

解决方案

核心思路

你需要先统计每个词汇(对应DataFrame的列)在整个语料库中的总出现次数,再筛选出次数恰好为5的列并移除。只需把你之前代码里的列筛选逻辑,从按列名后缀判断改成按词频判断即可。

针对词频矩阵的代码实现

如果你的DataFrame是标准词频矩阵(每列对应一个词汇,单元格值为该词汇在对应文档中的出现次数),直接按列求和就能得到总词频:

# 计算每列(词汇)在语料库中的总出现次数
total_word_counts = df.sum(axis=0)

# 筛选出总次数恰好为5的列名
cols_to_drop = total_word_counts[total_word_counts == 5].index.tolist()

# 移除目标列
df.drop(cols_to_drop, axis=1, inplace=True)

代码解释

  • df.sum(axis=0):按列求和,返回一个Series,索引是列名(词汇),值为该词汇在所有文档中的总出现次数。
  • total_word_counts[total_word_counts == 5].index.tolist():从总词频结果中筛选出次数等于5的词汇,提取它们的列名并转为列表。
  • 后续的drop用法和你之前删除_y结尾列的逻辑完全一致,只是替换了列筛选条件。

针对非词频矩阵的补充处理

如果你的DataFrame单元格是原始文本而非次数,需要先全局统计词汇频率:

from collections import Counter

# 拼接所有单元格的文本内容
all_corpus_text = ' '.join(df.stack().astype(str))
# 拆分词汇并统计频率
word_freq = Counter(all_corpus_text.split())

# 筛选出出现次数恰好为5的词汇
target_words = [word for word, count in word_freq.items() if count == 5]

# 移除对应列
df.drop(target_words, axis=1, inplace=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 15:27:03