2 回答

TA貢獻1860條經驗 獲得超9個贊
您的邏輯是您只想計算進入的訪客,而不是離開的訪客?,F在,如果你取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
添加回答
舉報