pandas - 按 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
解决方案
这只是几个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