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

如何在pandas中基于Stock=100的Rate值向下填充Discount列

实现方法

Python Pandas 方案

核心逻辑:先给Stock=100的锚点行计算Discount值,其余行留空,再用向下填充方法补全空值。

import pandas as pd
import numpy as np

# 读取/构造数据集
df = pd.DataFrame({
    "Name": ["AB", "CD", "EF", "GH", "IJ", "KL"],
    "Rate": [32.8, 56.7, 34.7, 33.1, 44.5, 33.6],
    "Stock": [0, 100, 0, 0, 100, 0]
})

# 仅锚点行计算Discount,其余设为NaN
df["Discount"] = np.where(df["Stock"] == 100, df["Rate"] * 0.95, np.nan)

# 向下填充空值,保留两位小数
df["Discount"] = df["Discount"].ffill().round(2)

print(df)

Excel 方案

假设你的数据从A1单元格开始存储,表头依次为A1=Name、B1=Rate、C1=Stock、D1=Discount:

  • D2单元格(对应AB行)留空,因为上方没有有效锚点
  • D3单元格输入公式:=IF(C3=100,B3*0.95,D2)
  • 按住D3单元格右下角的填充柄,向下拖拽到最后一行即可完成填充

公式逻辑:如果当前行Stock为100,就用当前行Rate计算折扣,否则直接沿用上方单元格的Discount值,自动实现锚点值向下传递的效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:51:03