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

Python Pandas:如何正确复刻aux_35变量的生成逻辑?

复刻aux_35变量的解决方案

问题说明

需要根据以下规则复刻aux_35变量:

  • 从pdt_050数组中取值
  • 当tob为0或1时,取数组第一个元素
  • 当tob大于pdt_050数组长度时,取数组最后一个元素
  • 若tob介于2和数组长度之间(含等于长度),取数组中对应tob-1索引的元素(适配示例中的实际取值情况)

原编写的函数逻辑错误,无法得到正确结果。

原函数错误分析

  1. 列引用错误:错误将目标变量aux_35转为整数当作索引,而非使用规则指定的tob列值
  2. 逻辑判断偏差:用try-except捕获索引异常的方式不符合规则要求,应根据tob的取值范围做明确条件判断
  3. 循环逻辑错误:遍历过程中错误调用aux_35的值,完全偏离了规则依赖tob的核心逻辑

修正后的代码

def generate_aux_35(row):
    pdt_array = row['pdt_050']
    tob_val = row['tob']
    array_len = len(pdt_array)
    
    if tob_val in (0, 1):
        return pdt_array[0]
    elif tob_val > array_len:
        return pdt_array[-1]
    else:
        # 适配tob在2到数组长度之间的情况,取对应索引(tob-1)
        return pdt_array[tob_val - 1]

# 生成复刻变量
df['replica'] = df.apply(generate_aux_35, axis=1)

结果验证

运行上述代码后,replica列与原aux_35列完全匹配:

# 查看对比结果
print(df[['aux_35', 'replica']])

输出:

aux_35   replica
0   0.683522  0.683522
1   0.683522  0.683522
2   0.683522  0.683522
3   0.726501  0.726501
4   0.726501  0.726501
5   0.596246  0.596246
6   0.159139  0.159139
7   0.258350  0.258350
8   0.582035  0.582035
9   0.373269  0.373269
10  0.583463  0.583463
11  0.436349  0.436349

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 01:52:37