python - 如何根据熊猫中的过去值填充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
一点帮助将不胜感激!谢谢
解决方案
使用布尔索引的一种方法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
推荐阅读
- javascript - App.post req.body 对象显示为空
- docker - 推送 Docker 镜像到 Swarm
- php - 使用 PHP 将 JSON 数据发布到 API 时出现 count() 错误问题
- yql - 使用 Yahoo Weather API 时,不推荐使用基于 HTTP 的公钥固定警告
- java - Swing - 希伯来语标点符号 (shva) 显示错误
- python - Django force_login 没有登录 Django 客户端?
- azure - 无法使用 Azure CICD Pipeline 访问部署在 Azure ACS Kubernetes 集群中的应用程序
- spring-boot - Log4j2 基于时间和大小的滚动文件追加器
- html - 如何将粗体的“紫水晶”移到左侧?
- ios - 将 SearchController 添加到 navigationItem 会导致状态栏在活动时变为黑色