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

如何为Pandas中value_counts输出的分箱区间添加自定义标签或重命名

如何为Pandas中value_counts输出的分箱区间添加自定义标签或重命名

嘿,这个问题我之前也碰到过,其实有两种超简单的解决思路,咱们一起来看看:

方法一:直接生成带自定义标签的分箱并统计频次

其实不用绕弯路,pd.cut本身就支持给分箱指定自定义标签,我们先把数据用pd.cut处理成带目标标签的Series,再直接对它做value_counts就行,一步到位:

import pandas as pd

data = [{'A': 1, 'B': "Jim"}, {'A': 5, 'B': "Jim"}, {'A': 2, 'B': "Bob"}, {'A': 3, 'B': "Bob"}]
df = pd.DataFrame(data)

mBins = [-1, 2, 4, 6]
mLabels = ["0-2", "3-4", "5-6"]

# 先给A列分箱并赋予自定义标签,再统计每个标签的数量
binned_counts = pd.cut(df["A"], bins=mBins, labels=mLabels).value_counts()
print(binned_counts)

运行后输出就是你想要的结果:

0-2    2
3-4    1
5-6    1
Name: A, dtype: int64

这里pd.cut会自动把每个数值匹配到对应的区间,并用你指定的mLabels替换掉默认的区间字符串,之后统计频次自然就得到了带友好标签的结果。

方法二:重命名已有的分箱统计结果

如果你已经用value_counts(bins=mBins)得到了原始的区间统计结果,也可以直接给索引重命名来替换成自定义标签。需要注意的是,默认的区间是Pandas的Interval类型,但我们可以直接按顺序给索引赋值新标签:

import pandas as pd

data = [{'A': 1, 'B': "Jim"}, {'A': 5, 'B': "Jim"}, {'A': 2, 'B': "Bob"}, {'A': 3, 'B': "Bob"}]
df = pd.DataFrame(data)

mBins = [-1, 2, 4, 6]
mLabels = ["0-2", "3-4", "5-6"]

simple_VC = df["A"].value_counts(bins=mBins, sort=False)
# 按分箱顺序替换索引为自定义标签
simple_VC.index = mLabels
print(simple_VC)

这里建议加上sort=False,这样分箱的顺序会和你定义的mBins顺序完全一致,避免重命名时出现顺序错乱的问题。运行后的输出同样符合预期:

0-2    2
3-4    1
5-6    1
Name: A, dtype: int64

备注:内容来源于stack exchange,提问作者DrWhat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 14:00:29