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

Pandas如何根据列B最近负数值对比列A值完成列B的填充修改

解决方案
import pandas as pd

# 构造原始DataFrame
data = {'Column A':[400, 522, 633, 744, 150, 140, 119, 744, 150, 400, 390, 315, 744, 150, 400, 522, 500, 633, 744, 204, 215, 150],
    'Column B':[400, 0, 0, 0, -150, 0, 0, 744, 0, -400, 0, 0, -744, 0, -400, 0, 0, -633, 0, 0, 0, 150]}
df = pd.DataFrame(data)

# 存储最近一次Column B负数值的绝对值
last_neg_abs = None

# 逐行遍历处理
for idx, row in df.iterrows():
    b_val = row['Column B']
    # 遇到负数,更新最新的负数值绝对值
    if b_val < 0:
        last_neg_abs = abs(b_val)
        continue
    # 非0值不修改
    if b_val != 0:
        continue
    # 还没出现过负数,不处理
    if last_neg_abs is None:
        continue
    # 判断是否低于阈值:比绝对值低20%以上即小于绝对值*0.8
    if row['Column A'] < last_neg_abs * 0.8:
        df.loc[idx, 'Column B'] = row['Column A']

# 输出结果验证
print(df)

逻辑说明

  • 维护last_neg_abs变量记录当前行之前最后一次出现的Column B负数值的绝对值,遇到新的负数时自动更新
  • 仅对Column B原始值为0的行做修改判断,原始非0值(正负均包含)会完全保留
  • 运行后输出结果和需求示例完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 21:36:01