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

Pandas是否有内置函数将DataFrame值转换为百分比?

Pandas实现DataFrame值转百分比(行/列/层级支持)

Pandas没有专门的内置函数一键将DataFrame中的值转换为百分比形式,但可以通过div()与sum()(或groupby().sum())的组合,轻松实现按行、按列甚至多层级的百分比转换需求,再配合样式格式化即可直观展示百分比。

1. 按列转换为百分比

计算每个值占其所在列总和的比例,再格式化为百分比:

import pandas as pd

# 示例DataFrame
df = pd.DataFrame({
    'A': [10, 20, 30],
    'B': [5, 15, 25]
})

# 按列计算比例(小数形式)
col_proportions = df.div(df.sum(axis=0), axis=1)
# 格式化为带两位小数的百分比显示
col_percent_display = col_proportions.style.format("{:.2%}")
  • df.sum(axis=0):计算每列的总和
  • div(..., axis=1):确保按列对齐进行除法运算

2. 按行转换为百分比

计算每个值占其所在行总和的比例:

# 按行计算比例(小数形式)
row_proportions = df.div(df.sum(axis=1), axis=0)
# 格式化为带一位小数的百分比显示
row_percent_display = row_proportions.style.format("{:.1%}")
  • df.sum(axis=1):计算每行的总和
  • div(..., axis=0):确保按行对齐进行除法运算

3. 多层级索引的复杂转换

针对带MultiIndex的DataFrame,可按指定层级分组计算百分比:

# 创建多层级索引示例
midx = pd.MultiIndex.from_tuples(
    [('Group1', 'X'), ('Group1', 'Y'), ('Group2', 'X'), ('Group2', 'Y')],
    names=['Group', 'Subgroup']
)
df_multi = pd.DataFrame({'Value': [10, 20, 15, 25]}, index=midx)

# 按Group层级计算每个Subgroup占该Group总和的百分比
multi_proportions = df_multi.div(df_multi.groupby(level='Group').sum(), level='Group')
# 格式化显示
multi_percent_display = multi_proportions.style.format("{:.2%}")
  • groupby(level='Group').sum():按Group层级分组求和
  • div(..., level='Group'):按指定层级对齐进行除法运算

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 20:39:22