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

如何在Pandas DataFrame的列中找出出现频率最高的词

问题描述

需要在Pandas DataFrame的Competition列中,为每行找出出现频率最高的词;如果有多个词出现次数相同且均为最高频,则将这些词全部用逗号分隔列出。

示例数据

import pandas as pd
df = pd.DataFrame({
    'City': ['Pune', 'Mumbai', 'Pune', 'Mumbai', 'Pune'],
    'Name': ['John', 'Boby', 'John', 'Boby', 'Nicky'], 
    'Competition': [
        'Chess,Drawing,Chess', 
        'Table Tennis,Table Tennis,Chess,Carrom', 
        'Chess,Carrom', 
        'Table Tennis,Chess,Chess,Chess', 
        'Carrom'
    ]
})

原始数据:

CityNameCompetition
0PuneJohnChess,Drawing,Chess
1MumbaiBobyTable Tennis,Table Tennis,Chess,Carrom
2PuneJohnChess,Carrom
3MumbaiBobyTable Tennis,Chess,Chess,Chess
4PuneNickyCarrom

期望输出

CityNameCompetitionMost Frequent
0PuneJohnChess,Drawing,ChessChess
1MumbaiBobyTable Tennis,Table Tennis,Chess,CarromTable Tennis
2PuneJohnChess,CarromCarrom,Chess
3MumbaiBobyTable Tennis,Chess,Chess,ChessChess
4PuneNickyCarromCarrom
解决方案

通过自定义函数结合apply方法即可实现需求,代码如下:

import pandas as pd
from collections import Counter

def get_most_frequent(s):
    # 分割字符串为单个词的列表
    items = s.split(',')
    # 统计每个词的出现次数
    count_result = Counter(items)
    # 获取最高出现次数
    max_freq = max(count_result.values())
    # 筛选所有出现次数等于最高频的词
    top_items = [word for word, freq in count_result.items() if freq == max_freq]
    # 用逗号连接结果返回
    return ','.join(top_items)

# 生成新列Most Frequent
df['Most Frequent'] = df['Competition'].apply(get_most_frequent)

# 查看结果
print(df)

代码说明

  1. 分割字符串:用split(',')把每行的Competition内容拆分成独立的词列表;
  2. 统计频次:借助Counter快速统计每个词的出现次数;
  3. 筛选最高频词:先找到最大出现次数,再筛选出所有达到该次数的词;
  4. 生成结果列:通过apply将函数作用于Competition列的每一行,生成目标列。

运行上述代码后,就能得到符合要求的DataFrame。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 16:24:31