python - 当列大于 0 时,如何对重置为 0 的列进行求和?

标签 python pandas

我有以下数据框,我想添加一列累积秒数,因为“螺旋钻”列大于 0,每当“螺旋钻”列超过 0 时,该列就会重置为 0。

x = pd.DataFrame(data={
        "date": ["2021-03-22 11:01:29", "2021-03-22 11:02:29", "2021-03-22 11:03:29", "2021-03-22 11:04:29", "2021-03-22 11:05:29", "2021-03-22 11:06:29"],
        "auger": [1450.0, 1450.0, 0.0, 0.0, 1200.0, 1200.0],
        "poll_seconds": [60, 60, 60, 60, 60, 60]
})

有没有办法创建一个名为“seconds_off”的列,每当“auger”列为 0 时,该列就会从 0 开始对 poll_seconds 进行累加?

最佳答案

mask = x["auger"] != 0

x["count"] = x.groupby((mask != mask.shift(1)).cumsum())[
    "poll_seconds"
].cumsum()
x.loc[~mask, "count"] = 0
print(x)

打印:

                  date   auger  poll_seconds  count
0  2021-03-22 11:01:29  1450.0            60     60
1  2021-03-22 11:02:29  1450.0            60    120
2  2021-03-22 11:03:29     0.0            60      0
3  2021-03-22 11:04:29     0.0            60      0
4  2021-03-22 11:05:29  1200.0            60     60
5  2021-03-22 11:06:29  1200.0            60    120

关于python - 当列大于 0 时,如何对重置为 0 的列进行求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67166457/

相关文章:

python - centos上用pypyodbc的pandas属性名返回中文

python - pandas groupby 聚合元素列表加法

python - Keras:无法在我的模型中使用自定义损失函数

python - 使用 selenium 向下滚动谷歌评论

python - UnicodeDecodeError : 'utf-8' codec can't decode bytes in position 0-1: invalid continuation byte

python - pandas列astype错误: TypeError: Cannot cast Index to dtype datetime64[D]

python - 为什么 pandas 格式化我的日期时间 1999-12-02 19 :30:00+00:00

python - 将数字加倍

python - python中有map的运算符形式吗?

python - 在 RethinkDB 中组合多个过滤器,并将每个过滤器的结果与排名字段合并