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

如何修改Pandas行计算函数,指定reversed(row)仅查询最后n列

Pandas 年度值计算自定义函数优化方案

修改后函数逻辑

新增steps入参控制计算范围,仅取行末尾指定数量的季度列参与计算,保留原有行索引对应的计算规则:

  • 行索引为People、AA、BB:倒序遍历指定范围列,返回第一个大于0的季度值
  • 行索引为MM、$$:返回指定范围列的所有季度值总和

完整函数代码

def compute_end_year_value(row, steps: int):
    # 限制steps最大值不超过当前行可用列数,避免索引报错
    valid_steps = min(steps, len(row))
    # 提取行末尾valid_steps个列作为计算范围
    calc_series = row.iloc[-valid_steps:]
    
    if row.name in ("People", "AA", "BB"):
        # 倒序查找第一个大于0的值
        for val in reversed(calc_series):
            if val > 0:
                return val
        # 无符合条件值返回0
        return 0
    elif row.name in ("MM", "$$"):
        return calc_series.sum()
    # 其他行索引可自定义返回规则,这里默认返回空值
    return None

调用示例

计算2020年全年总计(取前4个季度值)

假设你的DataFrame前4列依次为2020Q1、2020Q2、2020Q3、2020Q4,调用时传入steps=4即可:

df["2020年总计"] = df.apply(compute_end_year_value, axis=1, steps=4)

计算2021年中总计(取前2个季度值)

在新增2021Q1、2021Q2列后,调用时传入steps=2即可仅统计这两列的值:

df["2021年中总计"] = df.apply(compute_end_year_value, axis=1, steps=2)

注意事项

如果你的季度列没有按时间顺序从左到右排列,需要先按季度周期对列进行排序后再执行计算,避免计算范围错位。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 06:09:03