Я хочу вычислить разницу между днями между двумя датами в формате даты и времени. Теперь, в дополнение к этому, мне нужно сгруппировать и рассчитать разницу между днями по категориям. Дельта времени составляет 1 день, например, предыдущий день. С 02.01.2019 по 01.01.2019.
Сначала я попробовал ручной подход, который работал, но теперь должен быть автоматизирован. Я создал словарь, который представляет собой набор фреймов данных, отсортированных по дате.
#Manual approach
delta_list = []
def intraday_by_category_fixed_dates(category_column, category, date_column):
test_1 = df[(df[category_column] == category) & (df[date_column] == 'date')]
test_2 = df[(df[category_column] == category) & (df[date_column] == 'date')]
test_3 = df[(df[category_column] == category) & (df[date_column] == 'date')]
delta_list.append((test_2.fileCat.iloc[1] ,test_1.dateCreated.iloc[1], test_2.dateCreated.iloc[1],(test_2.avg_datetimes.iloc[1] - test_1.avg_datetimes.iloc[1]).total_seconds()))
delta_list.append((test_3.fileCat.iloc[1] ,test_2.dateCreated.iloc[1], test_3.dateCreated.iloc[1],(test_3.avg_datetimes.iloc[1] - test_2.avg_datetimes.iloc[1]).total_seconds()))
del test_1 ,test_2 ,test_3
return delta_list
#Automated approach not finished yet
unique_dates = []
for i in df['date_created'].map(lambda t: t.date()).unique():
unique_dates.append(str(i)) #fetches the unique dates from the df
x = {}
for i in unique_dates:
x[i] = df[(df['Category'] == 'Some Category1') & (df['date_created'] == i)] #created the dictionary
Выходными данными должен быть массив, который вычисляет разницу во времени между средним временем даты между двумя последовательными датами. Например. «Некоторая категория 1» от 02.01.2019 задерживается на 3 минуты по сравнению с 01.01.2019. Это должно быть воспроизведено для всех дат и категорий.