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

如何在Pandas中按区间(bins)分组?是否需使用聚合函数?

Pandas按区间分组并聚合Ctr值

直接用pd.cut()划分区间,再配合groupby()+sum()就能轻松实现需求,不需要复杂操作。

步骤示例:

  1. 准备示例数据
import pandas as pd

df = pd.DataFrame({
    'Position': [3, 12, 7, 18, 25, 9, 15, 22],
    'Ctr': [0.05, 0.03, 0.07, 0.02, 0.01, 0.06, 0.04, 0.02]
})
  1. 划分Position区间
    用range()生成等距区间,通过pd.cut()给每条数据打上区间标签:
# 生成区间范围(1-10,11-20...,上限可根据数据最大值调整)
bins = range(1, df['Position'].max() + 11, 10)
# 自定义区间显示标签
labels = [f'{start}-{start+9}' for start in bins[:-1]]

# 添加区间列到DataFrame
df['Position_Group'] = pd.cut(
    df['Position'],
    bins=bins,
    labels=labels,
    include_lowest=True  # 确保最小值被包含在第一个区间内
)
  1. 按区间分组求和
    直接对区间列分组,聚合Ctr的总和:
# 分组并计算Ctr总和
agg_result = df.groupby('Position_Group')['Ctr'].sum().reset_index()
print(agg_result)

输出结果:

Position_Group   Ctr
0          1-10  0.24
1         11-20  0.09
2         21-30  0.03

关键说明:

  • pd.cut()是处理数值区间分组的核心工具,支持自定义区间范围和标签
  • 聚合仅需sum()即可,不需要额外复杂的聚合函数
  • 如果你的Position最大值更大,只需调整bins的上限(比如range(1, 101, 10)就能覆盖1-100的区间)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 07:03:36