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

如何将多列值计数百分比转换为指定结构的Pandas DataFrame

问题:将Pandas列值占比整理为指定格式DataFrame

数据集

Name  Batch  DXYR  Emp  Lateral  GDX  MMT  CN
Joe    2       0     2       2    2    2    0  
Alan   0       1     1       2    2    0    0
Josh   1       1     2       1    1    1    2 
Max    0       1     0       0    0    0    2

需求:计算DataFrame中每列(仅包含0、1、2)各值的占比百分比,并整理为如下格式的DataFrame:

Batch  DXYR  Emp  Lateral  GDX     MMT    CN
Count_0_percent  98.32  52.5   22   54.5     44.2   53.4  76.01  
Count_1_percent  0.44   34.5   43   43.5     44.5   46.5  22.44
Count_2_percent  1.3    64.3   44   2.87     12.6   1.88  2.567

原代码及输出:
原循环代码:

for i in df.columns:
  (df[i].value_counts()/df[i].count())*100

输出为各列单独的Series:

0    90.608831
1     0.391169
2    9.6787899
Name: Batch, dtype: float64

0    95.545455
1     2.235422
2    2.6243553
Name: MX, dtype: float64

...

解决方案

不需要循环,直接用Pandas的apply方法结合value_counts,再通过转置和索引重命名实现目标格式:

完整代码

import pandas as pd

# 构造示例数据
data = {
    'Name': ['Joe', 'Alan', 'Josh', 'Max'],
    'Batch': [2, 0, 1, 0],
    'DXYR': [0, 1, 1, 1],
    'Emp': [2, 1, 2, 0],
    'Lateral': [2, 2, 1, 0],
    'GDX': [2, 2, 1, 0],
    'MMT': [2, 0, 1, 0],
    'CN': [0, 0, 2, 2]
}
df = pd.DataFrame(data)

# 排除非数值列(比如Name),只处理目标列
target_cols = df.columns.drop('Name')

# 计算每列各值的占比百分比,转置后重命名索引
result = df[target_cols].apply(lambda x: (x.value_counts(normalize=True) * 100)).T
result.index = [f'Count_{v}_percent' for v in result.index]

# 可选:保留指定小数位数,比如2位
result = result.round(2)

print(result)

代码说明

  1. 筛选目标列:先排除Name这类非数值列,只处理需要计算占比的列;
  2. 批量计算占比:用apply对每列执行value_counts(normalize=True),直接得到占比,再乘以100转为百分比;
  3. 转置与重命名:通过.T转置结果,让原列名变为新DataFrame的列,原值(0、1、2)变为行索引,再将索引重命名为Count_0_percent这类格式;
  4. 小数位数处理:用round()方法统一保留小数位数,让结果更整洁。

示例输出

运行上述代码后,会得到如下格式的结果:

Batch  DXYR   Emp  Lateral   GDX   MMT    CN
Count_0_percent   50.0  25.0  25.0     25.0  25.0  50.0  50.0
Count_1_percent   25.0  75.0  25.0     25.0  25.0  25.0   0.0
Count_2_percent   25.0   0.0  50.0     50.0  50.0  25.0  50.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 13:25:20