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

如何将DataFrame值计数与百分比并列并设置百分比格式输出Excel

解决值计数与百分比对应排版及格式化问题

原代码将每列的计数结果和百分比结果分别作为独立DataFrame拼接,导致出现重复的类别列(多余的蓝色框),且未对百分比进行格式化。以下是修正后的实现方案:

修改后的核心代码

import pandas as pd

li = []

for col in df.columns:
    # 获取值计数并整理列名
    value_counts = df[col].value_counts().reset_index()
    value_counts.columns = ['类别', f'{col}_计数']
    
    # 获取百分比并整理列名
    value_percentage = df[col].value_counts(normalize=True).reset_index()
    value_percentage.columns = ['类别', f'{col}_百分比']
    
    # 合并计数与百分比,避免重复类别列
    merged_col_data = pd.merge(value_counts, value_percentage, on='类别')
    li.append(merged_col_data)

# 横向拼接所有列的统计结果
data = pd.concat(li, axis=1)

百分比格式化处理

提供两种格式化方式,按需选择:

方式1:直接将小数转为带%的字符串

适合不需要保留数值格式的场景:

# 遍历所有百分比列进行格式化
for col_name in data.columns:
    if '百分比' in col_name:
        data[col_name] = data[col_name].apply(lambda x: f'{x:.2%}')

方式2:输出Excel时设置单元格格式(推荐)

保留数值格式,方便后续二次处理:

from openpyxl import load_workbook
from openpyxl.styles import numbers

# 先导出原始数据到Excel
data.to_excel('统计结果.xlsx', index=False)

# 加载工作簿并设置百分比格式
wb = load_workbook('统计结果.xlsx')
ws = wb.active

# 识别百分比列并设置格式
for col in ws.iter_cols():
    header = col[0].value
    if header and '百分比' in header:
        # 跳过表头,给数据行设置百分比格式
        for cell in col[1:]:
            cell.number_format = '0.00%'

wb.save('统计结果.xlsx')

关键修改说明

  • 直接遍历列名替代索引,代码更直观易读
  • 重命名计数、百分比列,避免默认列名混乱
  • 通过merge合并同一列的计数与百分比数据,确保类别列唯一,消除多余重复列
  • 提供两种百分比格式化方案,适配不同需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 12:25:32