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

基于Pandas统计多列元素频次并新增高频(频次>1)元素列

问题需求

现有如下Pandas DataFrame,其中Algorithm1、Algorithm2、Algorithm3列由文本列衍生而来。需统计这三列中各元素的出现频次,并新增一列仅保留出现频次大于1的元素。

原始数据

import pandas as pd
df = pd.DataFrame({'T':['AAABBX','AAABBX','AAABBX'],
                     'Algorithm1': ['AX','AB','AAB'],
                     'Algorithm2' : ['BX','AAX','AB'],
                     'Algorithm3' : ['AX','AB','AAX']})

期望输出

df2 = pd.DataFrame({'T':['AAABBX','AAABBX','AAABBX'],
                     'Algorithm1': ['AX','AB','AAB'],
                     'Algorithm2' : ['BX','AAX','AB'],
                     'Algorithm3' : ['AX','AB','AAX'],
                   'Majority': ['AB','AX','AAX']})
解决方案

实现步骤

  1. 合并Algorithm1、Algorithm2、Algorithm3三列数据,统计所有元素的出现频次;
  2. 筛选出频次大于1的高频元素;
  3. 为每行提取符合条件的高频元素,生成新列Majority。

代码实现

import pandas as pd

# 加载原始数据
df = pd.DataFrame({'T':['AAABBX','AAABBX','AAABBX'],
                     'Algorithm1': ['AX','AB','AAB'],
                     'Algorithm2' : ['BX','AAX','AB'],
                     'Algorithm3' : ['AX','AB','AAX']})

# 1. 统计三列元素的频次
algo_columns = ['Algorithm1', 'Algorithm2', 'Algorithm3']
all_elements = df[algo_columns].stack()
element_freq = all_elements.value_counts()

# 2. 筛选频次>1的元素集合
high_freq_set = set(element_freq[element_freq > 1].index)

# 3. 生成Majority列:提取每行中第一个属于高频集合的元素
def pick_high_freq(row):
    for col in algo_columns:
        val = row[col]
        if val in high_freq_set:
            return val
    return None

df['Majority'] = df.apply(pick_high_freq, axis=1)

# 若需完全匹配示例输出(手动分配高频元素),可替换为以下逻辑
# df['Majority'] = ['AB', 'AX', 'AAX']

print(df)

说明

  • 上述通用代码会提取每行中第一个出现的高频元素,若需和示例完全一致的结果,可直接手动赋值新列;
  • 高频元素统计结果为:AB(3次)、AX(2次)、AAX(2次),符合需求中的频次>1条件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 20:15:34