我有以下数据框,我想添加一列累积秒数,因为“螺旋钻”列大于 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/