开发者社区> 问答> 正文

Pandas Cumlative Max重置NA

我有一个如下所示的数据框:

2019-01-09 13:00:00-06:00 0.0 5264.927000
2019-01-09 13:05:00-06:00 1.0 5264.927028
2019-01-09 13:10:00-06:00 0.0 5244.075097
2019-01-09 13:15:00-06:00 0.0 5226.784019
2019-01-09 13:20:00-06:00 0.0 5235.085161
2019-01-09 13:25:00-06:00 0.0 5246.221935
2019-01-09 13:30:00-06:00 0.0 5232.491797
2019-01-09 13:35:00-06:00 0.0 5231.456668
2019-01-09 13:40:00-06:00 0.0 5234.495478
2019-01-09 13:45:00-06:00 0.0 5242.245801
2019-01-09 13:50:00-06:00 0.0 5241.228244
2019-01-09 13:55:00-06:00 0.0 5239.997655
2019-01-09 14:00:00-06:00 0.0 5243.712108
2019-01-09 14:05:00-06:00 0.0 5247.304100
2019-01-09 14:10:00-06:00 0.0 5250.996665
2019-01-09 14:15:00-06:00 0.0 5254.568331
2019-01-09 14:20:00-06:00 0.0 5254.568000
2019-01-09 14:25:00-06:00 1.0 5261.586980
2019-01-09 14:30:00-06:00 0.0 5262.187910
2019-01-09 14:35:00-06:00 0.0 5257.388773
2019-01-09 14:40:00-06:00 0.0 5255.861004
2019-01-09 14:45:00-06:00 0.0 5248.942361
2019-01-09 14:50:00-06:00 0.0 5246.232192
2019-01-09 14:55:00-06:00 0.0 5252.215607
2019-01-09 15:00:00-06:00 0.0 5252.628778
2019-01-09 15:05:00-06:00 0.0 5253.012436
2019-01-09 15:10:00-06:00 0.0 5248.225834
2019-01-09 15:15:00-06:00 0.0 5245.495417
2019-01-09 15:20:00-06:00 0.0 5240.674316
2019-01-09 15:25:00-06:00 0.0 5242.054722
第一列可以采用1或0仅采用。我想在第二列上运行累积最大值,但只要我们在第一列中遇到1,累积最大值就会重置。我一直在做的方式是循环并找到1在第一列中的位置,然后在每个部分上执行cum-max。我希望找到一种更快的方法。

展开
收起
一码平川MACHEL 2019-01-23 10:45:56 1708 0
1 条回答
写回答
取消 提交回答
  • col1 = df[1]
    col2 = df[2]
    group = (col1.sum() - col1.cumsum()) * (col2.max() + 1)
    result = (col2 - group).cummax() + group
    此方法比groupby和for循环快得多。

    2019-07-17 23:26:33
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
中文:即学即用的Pandas入门与时间序列分析 立即下载
即学即用的Pandas入门与时间序列分析 立即下载
Data Wrangling with PySpark for Data Scientists Who Know Pandas 立即下载