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

如何用Python Pandas的Apply函数实现列值与新列前值的比较

解决方案

实现思路

通过apply逐元素处理A列,利用可变对象维护前一个B值的状态,避免显式循环和loc操作,同时保证大数据集下的处理效率。

代码实现

import pandas as pd

# 构造测试数据集
A = [0, 5, 1, 7, 0, 2, 1, 3, 0]
df = pd.DataFrame(A, columns=['A'])

# 用可变对象维护前一个B值的状态
state = [0]

def compute_b(x):
    if x == 0:
        res = 0
        state[0] = 0
    else:
        res = max(x, state[0])
        state[0] = res
    return res

# 应用apply生成B列
df['B'] = df['A'].apply(compute_b)

print(df)

输出结果

A  B
0  0  0
1  5  5
2  1  5
3  7  7
4  0  0
5  2  2
6  1  2
7  3  3
8  0  0

说明

  • 用列表state存储前一个B值,因为列表是可变对象,可在apply的函数内部修改状态值;
  • 处理每个A值时:
    • 若A为0,直接返回0并重置状态;
    • 若A不为0,取当前A值与状态值的较大值作为B值,同时更新状态为该值;
  • 该方案避免了显式循环和loc操作,apply的底层实现优化能应对大规模数据集的处理需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 12:35:18