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

基于主数据的计算变量条件迭代评估方案咨询

解决方案

首先看你的输入数据:

import pandas as pd

data = {'ID': ['D','R','R','R','R'],
       'Calc_Var': [4,3,12,19,8],
        'Var': [5,5,10,20,20],
        'Adjusted':[5,5,20,20,10]
}

df = pd.DataFrame(data)
print(df)

输出:

ID  Calc_Var  Var  Adjusted
0  D         4    5         5
1  R         3    5         5
2  R        12   10        20
3  R        19   20        20
4  R         8   20        10

根据你给出的期望结果,反推出调整规则如下:

  • 仅对ID='R'的行进行处理
  • 当Calc_Var > Var时,将Var升级到下一个更高的等级(5→10,10→20,20保持不变)
  • 当Calc_Var < Var时,若Calc_Var小于Var的上一个等级,则降级到该等级;否则保持原Var(比如Var=20时,上一级是10,若Calc_Var<10则降到10,否则保持20)

用Pandas矢量化操作实现,无需循环:

# 定义主数据的等级顺序
levels = [5, 10, 20]
# 建立等级到索引的映射,方便快速定位上下等级
level_to_idx = {v: idx for idx, v in enumerate(levels)}

# 初始化Adjusted_Var列为原Var的值
df['Adjusted_Var'] = df['Var'].copy()

# 筛选需要处理的ID='R'的行
mask_r = df['ID'] == 'R'

# 处理升级逻辑:Calc_Var > Var时,升级到下一级
upgrade_mask = mask_r & (df['Calc_Var'] > df['Var'])
df.loc[upgrade_mask, 'Adjusted_Var'] = df.loc[upgrade_mask, 'Var'].apply(
    lambda x: levels[min(level_to_idx[x] + 1, len(levels)-1)]
)

# 处理降级逻辑:Calc_Var < Var时,判断是否需要降级
downgrade_mask = mask_r & (df['Calc_Var'] < df['Var'])
# 获取每个Var对应的上一级等级
prev_levels = df.loc[downgrade_mask, 'Var'].apply(
    lambda x: levels[level_to_idx[x]-1] if level_to_idx[x] > 0 else x
)
# 当Calc_Var小于上一级等级时,执行降级
df.loc[downgrade_mask & (df['Calc_Var'] < prev_levels), 'Adjusted_Var'] = prev_levels[df['Calc_Var'] < prev_levels]

# 查看结果
print(df[['ID', 'Calc_Var', 'Var', 'Adjusted', 'Adjusted_Var']])

运行结果:

ID  Calc_Var  Var  Adjusted  Adjusted_Var
0  D         4    5         5             5
1  R         3    5         5             5
2  R        12   10        20            20
3  R        19   20        20            20
4  R         8   20        10            10

如果你需要调整规则(比如修改升级/降级的阈值),只需修改对应的条件判断即可,整个过程都是矢量化操作,效率远高于循环迭代。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 06:20:43