我有一个日志,当用户登录和退出。我想要创建一个日志,以显示特定用户是否在特定的15分钟窗口中联机。
熊猫有不同的日期时间索引选项(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发布于 2017-10-27 16:31:03
这里有一条路。首先,为每个用户/时间创建一个空/零的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 0https://stackoverflow.com/questions/46979414
复制相似问题