首页 > 解决方案 > 如何根据熊猫中的过去值填充n行

问题描述

以下是我的数据集:

Name  Rate   Stock   
AB    32.8    0         
CD    56.7   100     
EF    34.7    0
GH    33.1    0      
IJ    44.5   100      
KL    33.6    0  

我想添加另一列Discount,即0.95 * Rate. 但是,它只能Rate与 一起使用Stock = 100。它应该不断重复该Discount值,直到找到下一个Stock = 100

这是我想要的结果:

Name   Rate   Stock   Discount 
AB     32.8    0         
CD     56.7   100       53.87
EF     34.7    0        53.87
GH     33.1    0        53.87
IJ     44.5   100       42.28
KL     33.6    0        42.28

一点帮助将不胜感激!谢谢

标签: pythonpandas

解决方案


使用布尔索引的一种方法ffill

df["Discount"] = df["Rate"][df["Stock"].eq(100)] * 0.95
df["Discount"] = df["Discount"].ffill().fillna("")
print(df)

输出:

   Rate  Stock Discount
0  32.8      0         
1  56.7    100   53.865
2  34.7      0   53.865
3  33.1      0   53.865
4  44.5    100   42.275
5  33.6      0   42.275

推荐阅读