У меня есть такой фрейм данных. Мы назовем это df1:
zone script datetimecomplete
0 2.0 Consumers 2018-05-03 16:09:48
1 2.0 Inventory 2018-05-03 16:09:48
2 2.0 Orders_Details 2018-05-03 16:09:48
3 3.0 Consumers 2018-05-03 16:09:48
4 3.0 Inventory 2018-05-03 16:09:48
5 3.0 Orders_Details 2018-05-03 16:09:48
6 6.0 Birthday 2018-05-03 16:09:48
Мне нужно создать еще один фрейм данных (df2) на основе df1. Требование заключается в том, что для каждого столбца 'zone' and 'script'
мне необходимо сгенерировать количество сценариев за последние 24 часа (нужно сравнивать только дату, а не метки времени). Нужно только добавить строки, где datetimecomplete
столбец Сегодня минус 1 день.
df2 должен иметь 4 столбца:
[zone, script, datetimecomplete, totalcount]
зона - такая же, как df1
скрипт - такой же, как df1
datetimecomplete - текущая дата минус 1 день должна быть добавлена в df2
totalcount - необходимо подсчитать каждый отдельный скрипт за последние 24 часа с сегодняшней даты.
Пример df2:
zone script datetimecomplete totalcount
2.0 Consumers 2018-05-02 16:09:48 2
2.0 Inventory 2018-05-02 16:09:48 1
2.0 Orders_Details 2018-05-02 16:09:48 1
3.0 Consumers 2018-05-02 16:09:48 1
3.0 Inventory 2018-05-02 16:09:48 1
3.0 Orders_Details 2018-05-02 16:09:48 4
6.0 Birthday 2018-05-02 16:09:48 6
Я не уверен, как это сделать.
Код до сих пор дает мне счетчик, но не за последние 24 часа из df1, и при этом он не создает столбец totalcount
:
df2 = df1.groupby(['zone', 'script', df1['datetimecomplete'] - pd.Timedelta(days=1)])['script'].count()
образец SQL-запроса, который я пытаюсь выполнить:
select df1.zone, df1.script, currentdate - 1 as [datetimecomplete], count(df1.zone) as [TotalCount]
from [df1] as a
where df1.datetimecomplete = currentdate - 1
group by df1.zone, df1.script
Заранее спасибо.