2 回答
TA贡献1860条经验 获得超9个赞
您的逻辑是您只想计算进入的访客,而不是离开的访客。现在,如果你取diff(),那么进来的就是正数,离开的就是负数。所以我们可以用 和 再次掩盖负数0。
咱们试试吧:
dates = df.DATETIME.dt.normalize()
max_visitors = (df.groupby(dates)['CLIENTS'].diff() # find the difference
.fillna(df['CLIENTS']) # these are the first records in the day
.clip(0) # replace negatives with 0
.groupby(dates).sum() # sum by days
)
输出:
DATETIME
2018-03-03 7.0
Name: CLIENTS, dtype: float64
TA贡献2036条经验 获得超8个赞
如果您的 MySql 版本是 8.0+,那么您可以使用LAG()窗口函数和聚合:
select
sum(case when clients > prev then clients - prev end) total
from (
select *, lag(clients, 1, 0) over (order by datetime) prev
from tablename
where date(datetime) = '2018-03-03'
) t
添加回答
举报