我有一个 Dataframe ,我想添加另一列,其中包含某些值,这些值在BH为yes之后在行上更新,并在日期更改之前一直更新
要输入的值是CP和DP的差值
Date CP DP BH
2/9/2016 122.2 122.13
2/9/2016 122 122.13
2/9/2016 122.35 122.13
2/9/2016 122.85 122.13 Yes
2/9/2016 122.75 122.13
2/9/2016 122.95 122.13
2/9/2016 123 122.13
2/10/2016 123.65 122.12
2/10/2016 123.19 122.12
2/10/2016 122.45 122.12 Yes
2/10/2016 121.85 122.12
2/10/2016 121.75 122.12
2/10/2016 121.35 122.12
预期的输出为
Date CP DP BH Distance
2/9/2016 122.2 122.13
2/9/2016 122 122.13
2/9/2016 122.35 122.13
2/9/2016 122.85 122.13 Yes
2/9/2016 122.75 122.13 0.62
2/9/2016 122.95 122.13 0.82
2/9/2016 123 122.13 0.87
2/10/2016 123.65 122.12
2/10/2016 123.19 122.12
2/10/2016 122.45 122.12 Yes
2/10/2016 121.85 122.12 -0.27
2/10/2016 121.75 122.12 -0.37
2/10/2016 121.35 122.12 -0.77
所以基本上,在BH为yes之后,相同日期的所有行的距离都更新了,每个日期都做了相同的操作。我在 Dataframe 中有超过2000000条记录。
我已经能够使用np. where将BH更新为yes,但是无法解决更新距离列的问题。考虑到我拥有的数据量,我正在努力避免循环,有什么建议吗
1条答案
按热度按时间afdcj2ne1#
将列
BH
与Series.eq
进行比较,然后与GroupBy.cummax
进行比较,得到每组匹配后的所有True
,最后减去过滤的行,得到新列Distance
: