Как добавить колонку с индексом промежутков времени?
Хочу сделать колонку df['Period'], в которой значения Time будут обозначены значением Period, каждый промежуток по 15 минут. То есть, каждый период обозначается как 1,2,3.....1241 и тп.
По сути, это pandas.DatetimeIndex, но в этой задаче как применить это не знаю, возможно его не следует применять.
Date Time Score
0 20200601 100000 35.32
1 20200601 100000 35.32
2 20200601 100001 35.32
3 20200601 100001 35.32
4 20200601 100001 35.32
5 20200601 100001 35.31
6 20200601 100001 35.32
7 20200601 100002 35.32
...
83 20200601 101602 35.32
84 20200601 101603 35.32
Ожидаемый результат:
Date Time Score Period
0 20200601 100000 35.32 1
1 20200601 100000 35.32 1
2 20200601 100001 35.32 1
3 20200601 100001 35.32 1
4 20200601 100001 35.32 1
5 20200601 100001 35.31 1
6 20200601 100001 35.32 1
7 20200601 100002 35.32 1
...
83 20200601 101602 35.32 2
84 20200601 101603 35.32 2
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
df["Period"] = (df
.assign(dt=pd.to_datetime(df["Date"].astype(str) + df["Time"].astype(str),
format="%Y%m%d%H%M%S"))
.groupby(pd.Grouper(key="dt", freq="15T")).ngroup() + 1
результат:
In [19]: df
Out[19]:
Date Time Score Period
0 20200601 100000 35.32 1
1 20200601 100000 35.32 1
2 20200601 100001 35.32 1
3 20200601 100001 35.32 1
4 20200601 100001 35.32 1
... ... ... ... ...
1398 20200601 114407 35.31 7
1399 20200601 114407 35.31 7
1400 20200601 114407 35.31 7
1401 20200601 114407 35.31 7
1402 20200601 114407 35.31 7
[1403 rows x 4 columns]