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

如何在pandas中实现Excel函数IF(H3>I3,C2,0)并倒序标注出现次数

Pandas 实现方案

逻辑说明

你提到的Excel公式IF(H3>I3,C2,0)对应规则:当前行H列值大于当前行I列值时,J列取上一行C列的值,否则取0,我们基于该规则完成列生成和逆序计数。

步骤1:生成J列基础值

假设你的DataFrame中对应Excel H、I、C列的列名分别为H_col、I_col、C_col,可替换为你实际的列名:

import pandas as pd

# 初始化J列为0
df['J'] = 0
# 匹配IF条件,满足的行赋值为上一行C列的值
condition = df['H_col'] > df['I_col']
df.loc[condition, 'J'] = df['C_col'].shift(1)

步骤2:从下到上统计满足条件的出现次数

先将DataFrame逆序,对满足J!=0的行做累计计数,再还原原顺序即可:

# 逆序DataFrame并重置索引避免错位
df_rev = df[::-1].reset_index(drop=True)
# 累计计数,仅满足条件的行保留计数值,其余行计为0
df_rev['occur_count'] = (df_rev['J'] != 0).cumsum()
df_rev['occur_count'] = df_rev['occur_count'].where(df_rev['J'] != 0, 0)
# 还原为原顺序
df = df_rev[::-1].reset_index(drop=True)

最终occur_count列就是你要的标记值:最下方首次出现的满足条件行标记为1,向上依次递增为2、3,不满足条件的行标记为0。

注意事项

  • 运行代码前如果你的DataFrame不是默认连续整数索引,建议先执行df = df.reset_index(drop=True),避免行错位
  • 如果需要把计数和J列值合并,可以自行修改赋值逻辑,比如df.loc[df['J']!=0, 'J'] = df['J'].astype(str) + '_第' + df['occur_count'].astype(str) + '次'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:54:02