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

编写函数获取多列value_counts并合并为单个DataFrame

批量获取多列value_counts并合并为DataFrame

现有样例数据如下:

col1    col2    col3    col4
1       a       as      12
1       f       as      13
2       d       af      13
3       f       as      12
4       f       at      14
4       d       at      14
5       h       am      15

手动对每列执行value_counts()再合并的方式可行,但代码冗余,示例如下:

col1 = df['col1'].value_counts().reset_index()
col1.columns = ['value','vaule_count']
col1['column'] = 'col1'
col2 = df['col2'].value_counts().reset_index()
col2.columns = ['value','vaule_count']
col2['column'] = 'col2'
col3 = df['col3'].value_counts().reset_index()
col3.columns = ['value','vaule_count']
col3['column'] = 'col3'
col4 = df['col4'].value_counts().reset_index()
col4.columns = ['value','vaule_count']
col4['column'] = 'col4'

df1 = pd.DataFrame()
df1 = pd.concat([col1,col2,col3,col4],ignore_index=True)
df1

期望输出格式如下:

value   vaule_count column
0   1   2   col1
1   4   2   col1
2   2   1   col1
3   3   1   col1
4   5   1   col1
5   f   3   col2
6   d   2   col2
7   a   1   col2
8   h   1   col2
9   as  3   col3
10  at  2   col3
11  af  1   col3
12  am  1   col3
13  12  2   col4
14  13  2   col4
15  14  2   col4
16  15  1   col4

优化方案

编写通用函数批量处理指定列,自动完成value_counts计算、列重命名与结果合并:

import pandas as pd

def get_combined_value_counts(df, columns):
    result_dfs = []
    for col in columns:
        # 计算当前列的value_counts并重置索引
        count_df = df[col].value_counts().reset_index()
        # 重命名列名
        count_df.columns = ['value', 'vaule_count']
        # 添加当前列的标识
        count_df['column'] = col
        result_dfs.append(count_df)
    # 合并所有结果并重置索引
    return pd.concat(result_dfs, ignore_index=True)

# 函数使用示例
df = pd.DataFrame({
    'col1': [1,1,2,3,4,4,5],
    'col2': ['a','f','d','f','f','d','h'],
    'col3': ['as','as','af','as','at','at','am'],
    'col4': [12,13,13,12,14,14,15]
})

final_result = get_combined_value_counts(df, ['col1','col2','col3','col4'])
print(final_result)

该函数通过遍历指定列批量处理逻辑,既避免了重复代码,也支持灵活扩展处理任意数量的目标列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 18:24:04