根据总频率删除 pandas DataFrame 列中的单词

问题描述 投票:0回答:1

我有一个数据框。我想找出哪些单词在整个语料库中恰好出现了五次。我还需要弄清楚如何从数据框中删除所有这些单词/删除列。

我用了这个代码

df.drop([col for col in df.columns if col.endswith('_y')],axis=1,inplace=True)

删除任何以 y 结尾的单词,但我不知道如何调整代码以查找恰好等于 5 的单词。

python pandas dataframe
1个回答
0
投票

假设列名称中的单词由空格分隔...

  1. 将所有列名称组合成一个字符串,然后使用
    str.split()
    Counter
    来计数单词。
  2. 列出严格计数为 5 的单词
  3. 通过使用
    '|'
  4. 加入列表来创建不良单词的正则表达式
  5. 使用正则表达式模式识别带有
    df.columns.str.contains
    的列
  6. 删除列

from collections import Counter
# Example DataFrame
df = pd.DataFrame(columns = ["hello", "hello world", "hello goodbye", "hello hello", "foo", "foo foo foo foo foo"])

word_count = Counter(' '.join(df.columns).split())

remove_words = [word for word in word_count if word_count[word] == 5]

columns_to_drop = df.columns[df.columns.str.contains('|'.join(remove_words))]

df.drop(columns = columns_to_drop)
© www.soinside.com 2019 - 2024. All rights reserved.