gpt4 book ai didi

python - 使用 resample/timedelta 进行 pandas 在线日志记录

转载 作者:太空宇宙 更新时间:2023-11-03 14:35:32 26 4
gpt4 key购买 nike

我有用户登录和退出的日志。我想创建一个日志,显示特定用户在特定的十五分钟窗口内是否在线。

pandas 有不同的日期时间索引选项(date_range、period_range),但我使用的是 pd.date_range(start, stop, freq) 之类的东西,但我不知道从哪里开始。

这是数据:

user    start                      stop
Alice 2017-10-02 08:59:40-04:00 2017-10-02 09:25:49-04:00
Joe 2017-10-02 08:59:45-04:00 2017-10-02 10:45:11-04:00
Bob 2017-10-02 09:16:06-04:00 2017-10-02 10:05:53-04:00

这是我需要的(0 处于离线状态,1 处于在线状态):

period            Alice Joe Bob
2017-10-02 09:00 1 1 0
2017-10-02 09:15 1 1 1
2017-10-02 09:30 0 1 1

最佳答案

这是一种方法。首先为每个用户/时间创建一个空/归零的 DataFrame:

In [11]: res = pd.DataFrame({name: 0 for name in df["user"].unique()}, pd.date_range("2017-10-02 09:00", "2017-10-02 11:00", freq="15T"))

In [12]: res
Out[12]:
Alice Bob Joe
2017-10-02 09:00:00 0 0 0
2017-10-02 09:15:00 0 0 0
2017-10-02 09:30:00 0 0 0
2017-10-02 09:45:00 0 0 0
2017-10-02 10:00:00 0 0 0
2017-10-02 10:15:00 0 0 0
2017-10-02 10:30:00 0 0 0
2017-10-02 10:45:00 0 0 0
2017-10-02 11:00:00 0 0 0

现在填写/设置用户登录的时间:

In [13]: for _, row in df.iterrows():
...: res.loc[row["start"]:row["stop"], row["user"]] = 1
...:

In [14]: res
Out[14]:
Alice Bob Joe
2017-10-02 09:00:00 1 0 1
2017-10-02 09:15:00 1 0 1
2017-10-02 09:30:00 0 1 1
2017-10-02 09:45:00 0 1 1
2017-10-02 10:00:00 0 1 1
2017-10-02 10:15:00 0 0 1
2017-10-02 10:30:00 0 0 1
2017-10-02 10:45:00 0 0 1
2017-10-02 11:00:00 0 0 0

关于python - 使用 resample/timedelta 进行 pandas 在线日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46979414/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com