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

如何基于value_counts函数生成指定格式的Pandas DataFrame

问题:统计Pandas DataFrame每列中1-5的出现次数并生成指定格式结果

给定如下Pandas DataFrame,需要统计每列中值1、2、3、4、5的出现次数,期望得到如下格式的结果:

feature   count_of1    count_of2  count_of3  count_of4   count_of5
diameter     3             2         8           18         29
value        0             0         1            7         52
lenght       7             7         12           15        19

已知可借助value_counts()实现,但不清楚如何生成该目标格式的DataFrame。需注意:示例仅含3列,但实际列数可能更多,因此不能硬编码列名。

对应的Pandas DataFrame如下:

import pandas as pd

df = pd.DataFrame({
    'diameter': {0:5,1:5,2:5,3:4,4:5,5:5,6:5,7:5,8:4,9:4,10:4,11:5,12:4,13:5,14:1,15:5,16:5,17:4,18:1,19:5,20:3,21:4,22:5,23:5,24:4,25:5,26:2,27:5,28:2,29:4,30:3,31:5,32:5,33:5,34:4,35:5,36:5,37:5,38:3,39:4,40:4,41:3,42:4,43:5,44:5,45:3,46:1,47:5,48:4,49:3,50:5,51:3,52:5,53:5,54:4,55:4,56:4,57:4,58:5,59:3},
    'value': {0:5,1:5,2:5,3:5,4:5,5:5,6:4,7:5,8:5,9:5,10:5,11:5,12:5,13:5,14:5,15:5,16:5,17:4,18:3,19:5,20:5,21:5,22:5,23:5,24:5,25:5,26:5,27:5,28:5,29:5,30:5,31:5,32:5,33:5,34:4,35:5,36:5,37:5,38:5,39:5,40:5,41:5,42:5,43:4,44:5,45:5,46:5,47:4,48:5,49:5,50:5,51:4,52:5,53:5,54:5,55:5,56:5,57:4,58:5,59:5},
    'lenght': {0:2,1:2,2:2,3:3,4:2,5:5,6:3,7:3,8:3,9:3,10:3,11:5,12:5,13:3,14:5,15:2,16:4,17:2,18:1,19:3,20:4,21:4,22:1,23:4,24:5,25:5,26:3,27:5,28:3,29:3,30:3,31:5,32:2,33:3,34:2,35:5,36:4,37:5,38:3,39:5,40:5,41:3,42:3,43:1,44:4,45:3,46:1,47:1,48:2,49:3,50:5,51:2,52:2,53:1,54:5,55:4,56:5,57:2,58:1,59:3}
})

解决方案

可以通过apply结合value_counts、reindex和重命名操作实现,无需硬编码列名,步骤如下:

# 统计每列1-5的出现次数,确保所有列都包含这五个值的统计(缺失值填0)
count_df = df.apply(lambda col: col.value_counts().reindex([1, 2, 3, 4, 5], fill_value=0))

# 重命名统计列,将原列名转为feature列
result = count_df.rename(columns={
    1: 'count_of1',
    2: 'count_of2',
    3: 'count_of3',
    4: 'count_of4',
    5: 'count_of5'
}).reset_index().rename(columns={'index': 'feature'})

# 查看结果
print(result)

代码解释

  1. df.apply(lambda col: col.value_counts().reindex([1,2,3,4,5], fill_value=0)):对DataFrame的每一列执行value_counts统计值出现次数,再用reindex指定1-5的固定顺序,缺失的统计值用0填充,保证所有列的统计结果结构一致。
  2. 重命名与重置索引:将统计列的索引(1-5)改为目标格式的列名,再通过reset_index把原DataFrame的列名转为feature列,最终得到符合要求的结果。

运行代码后输出结果与期望格式完全一致:

feature  count_of1  count_of2  count_of3  count_of4  count_of5
0  diameter          3          2          8         18         29
1     value          0          0          1          7         52
2    lenght          7          7         12         15         19

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 15:35:39