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

如何将DataFrame频数统计的最后n行合并为一行并生成百分比统计

实现DataFrame分类频数的合并汇总与百分比统计

可以通过以下步骤实现需求,直接运行代码即可得到目标结果:

import pandas as pd

# 创建示例DataFrame
df = pd.DataFrame({"category":['u','v','w','u','y','z','y','z','x','x','y','z','x','z','x']})

# 获取分类频数统计
counts = df['category'].value_counts()

# 设置需要合并的末尾行数n
n = 3

# 分离高频分类与待合并的低频分类
top_categories = counts.iloc[:-n]
other_total = counts.iloc[-n:].sum()

# 合并为新的统计结果
merged_counts = pd.concat(
    [top_categories, pd.Series([other_total], index=[f'Other ({n})'])],
    axis=0
)

# 计算百分比并格式化为带%的字符串
total = merged_counts.sum()
percentage = (merged_counts / total * 100).round().astype(int).astype(str) + '%'

# 组合成最终的DataFrame
result = pd.DataFrame({'count': merged_counts, 'pct': percentage})
print(result)

运行后输出:

count  pct
z              4  27%
x              4  27%
y              3  20%
Other (3)      4  27%

步骤说明:

  1. 获取频数统计:用value_counts()直接得到各分类的出现次数,默认按降序排列。
  2. 分离与合并低频分类:通过iloc[:-n]取前几行高频分类,iloc[-n:]取最后n行低频分类并求和,再用pd.concat合并成新的Series,命名为Other (n)。
  3. 计算百分比:用各分类的频数除以总数,乘以100后取整,再拼接%符号得到格式化的百分比字符串。
  4. 组合结果:将频数和百分比合并为一个DataFrame,得到规范的汇总统计表格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 00:16:05