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

Pandas基于FY财年条件匹配上一年Value值创建新列问题

解决方案

核心逻辑是给每个财年的行生成组内唯一顺序编号,通过「FY+1+组内编号」映射上一财年同顺位的Value,全向量化操作适配百万行级数据,执行效率极高。

import pandas as pd

# 你的原始DataFrame读入后执行以下逻辑
# 1. 按财年分组生成组内行编号,保证同顺位匹配
df['fy_row_idx'] = df.groupby('FY').cumcount()

# 2. 构造上一财年Value的映射表
prev_fy_map = df[['FY', 'fy_row_idx', 'Value']].rename(columns={'Value': 'prev_FY'})
prev_fy_map['FY'] = prev_fy_map['FY'] + 1

# 3. 左关联匹配得到结果,删除临时编号列
df = df.merge(prev_fy_map, on=['FY', 'fy_row_idx'], how='left').drop(columns='fy_row_idx')

注意事项

  • 若同财年内需要按指定列排序后再匹配顺位,可在生成组内编号前先排序:
    df = df.sort_values(['FY', 'A', 'B'], ignore_index=True)
    
  • 若财年不连续,需要匹配最近一个存在的财年而非严格FY-1,可先提取所有唯一财年排序,生成「财年-上一财年」映射表替换prev_fy_map['FY'] = prev_fy_map['FY'] + 1逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:06:06