首页 > 解决方案 > 按 ID 和时间创建索引 - Pandas

问题描述

我有带有 ID 和时间(日期和时间)的数据框。我想按 ID(排序)和时间(排序)索引这些数据,其中日期和时间是分开的。此外,创建变量“周末”,在周末(周六或周日)获得 1,否则为 0。

数据框演示:

ID  Date_n_time             X
1   08/27/2019 08:40:04     2
3   07/27/2019 08:40:04     1
1   08/27/2019 09:40:04     7
2   07/27/2019 08:50:00     3
3   07/29/2019 08:40:04     4
1   08/28/2019 07:40:03     5
3   07/29/2019 08:41:05     6

预期结果:

ID  Date        Time        X   Weekend
1   08/27/2019  08:40:04    2   0
                09:40:04    7   0
    08/28/2019  07:40:03    5   0
2   07/27/2019  08:50:00    3   1
3   07/27/2019  08:40:04    1   1
    07/29/2019  08:40:04    4   0
                08:41:05    6   0

标签: pandas

解决方案


这只是几个dt查找和排序。要找到周末,只需使用.dt.weekday, 和一些数学来确保它是星期六或星期日。


s = df['Date_n_time'].dt

d = dict(
    Date=s.date,
    Time=s.time,
    Weekend=(s.weekday // 5),
)

df.drop('Date_n_time', 1).assign(**d).set_index(['ID', 'Date', 'Time']).sort_index()

                        X  Weekend
ID Date       Time
1  2019-08-27 08:40:04  2        0
              09:40:04  7        0
   2019-08-28 07:40:03  5        0
2  2019-07-27 08:50:00  3        1
3  2019-07-27 08:40:04  1        1
   2019-07-29 08:40:04  4        0
              08:41:05  6        0

推荐阅读