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

如何根据DataFrame的freq列区间给group列赋值并计算分组均值

解决方法

你可以用以下两种方案实现自定义区间的group列赋值,后续再分组计算均值填充avg列即可。

方案1:使用pd.cut高效批量打标(推荐,适合区间数量多的场景)

pd.cut可以直接根据你定义的区间边界批量给数据打分类标签,不需要手写大量筛选条件:

import pandas as pd

# 1. 按你的需求自定义所有区间的左右边界,示例按你给出的前两个区间填充,自行补全剩余22个区间的边界
# 注意边界要按从小到大的顺序排列
freq_bins = [0.1, 0.2, 1, 1.2]
# 2. 定义每个区间对应的group值,数量比区间边界少1,此处按顺序填1到24即可
group_labels = [1, 2]

# 3. 给group列赋值,include_lowest=True保证左边界的数值会被包含在对应区间内
# 不在你定义区间内的数值默认返回NaN,用fillna保留原来的0值
df['group'] = pd.cut(
    df['freq'],
    bins=freq_bins,
    labels=group_labels,
    include_lowest=True
).fillna(0).astype(int)

方案2:遍历自定义规则赋值(适合规则少、区间不规律的场景)

如果你更倾向于逐条定义区间规则,可以把规则存在列表里遍历执行,避免重复写loc代码:

# 定义所有规则,格式为(目标group值, 区间左边界, 区间右边界),补全剩余22条规则即可
group_rules = [
    (1, 0.1, 0.2),
    (2, 1, 1.2)
]

for group_val, left_bound, right_bound in group_rules:
    df.loc[(df['freq'] >= left_bound) & (df['freq'] <= right_bound), 'group'] = group_val

计算avg列

group列赋值完成后,用groupby + transform即可直接把分组均值填充到对应行的avg列:

df['avg'] = df.groupby('group')['pow'].transform('mean')

你可以执行print(df['group'].value_counts())验证各group的行数是否符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 22:57:05