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

Pandas按每行Top x指定数量取最高周列值计算均值的实现方法

实现方案

直接采用逐行自定义计算的方式即可,逻辑清晰易维护,普通数据集场景下效率完全够用:

import pandas as pd
import numpy as np

# 构造示例DataFrame
df = pd.DataFrame({'week 1' : [1.0, 5.0, 7.0, 6.0, np.nan],
               'week 2' : [3.0, np.nan, 9.0, 8.0, np.nan],
               'week 3' : [1.0, 2.0, 2.0, 1.0, 6.0],
               'week 4' : [np.nan, 4.0, 2.0, 7.0, 6.0],
               'Top x' : [3.0, 2.0, 4.0, 3.0, 3.0]})

def calc_row_mean(row):
    # 提取当前行所有week列的非空值
    week_valid = row.filter(like='week').dropna()
    x = int(row['Top x'])
    # 实际计算的数量取x和有效数量的最小值,兼容有效数不足x的情况
    calc_num = min(x, len(week_valid))
    if calc_num == 0:
        return np.nan
    # 取最大的calc_num个值求均值
    return week_valid.nlargest(calc_num).mean()

df['Mean'] = df.apply(calc_row_mean, axis=1)

执行后得到的Mean列和预期结果完全一致。如果是处理百万级以上的超大数据集,可以再优化为向量化操作进一步提升运行速度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 19:54:08