【发布时间】:2021-11-23 17:36:57
【问题描述】:
我有以下数据框:
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)
我想要做的是告诉程序逐行执行并将 B 列中最后一个负值的绝对值与当前行的 A 列值进行比较,如果它低 20%,则将其复制到列B. 修改后的 B 列的 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, 119, 744, 0, -400, 0, 315, -744, 150, -400, 0, 0, -633, 0, 204, 215, 150],
}
因此,例如在第 6 行中,B 列中的最后一个负值是 -150,因此当您将此值与 A 列中的 140 的值进行比较时,它的绝对值为 150,然后该值不会被复制,因为 140 仍然是在 20% 阈值内,但是在第 7 行,119 比 150 低 20% 以上,因此被复制到 B 列。在第 10 行,最后一个负数变为 -400,因此它将开始使用该值进行比较,然后再次跳过390 但复制 315。
我希望它足够清楚,并提前感谢您的回答。
【问题讨论】:
标签: python arrays pandas dataframe numpy