У меня есть pandas фрейм данных (df), который сгруппирован по значению индекса. с повторяющимися строками.
Я хотел бы добавить новый столбец с датами для каждой строки, представляющими каждый день в пределах df.start_date и df.end_date для каждой группы:
Из этого:
index start_date end_date number_of_days value
0 8/12/2019 10/12/2019 3 2091
0 8/12/2019 10/12/2019 3 2091
0 8/12/2019 10/12/2019 3 2091
1 11/12/2019 14/12/2019 4 2214
1 11/12/2019 14/12/2019 4 2214
1 11/12/2019 14/12/2019 4 2214
1 11/12/2019 14/12/2019 4 2214
2 15/12/2019 16/12/2019 2 8430
2 15/12/2019 16/12/2019 2 8430
К этому:
index start_date end_date number_of_days value NEW_COLUMN
0 8/12/2019 10/12/2019 3 2091 8/12/2019
0 8/12/2019 10/12/2019 3 2091 9/12/2019
0 8/12/2019 10/12/2019 3 2091 10/12/2019
1 11/12/2019 14/12/2019 4 2214 11/12/2019
1 11/12/2019 14/12/2019 4 2214 12/12/2019
1 11/12/2019 14/12/2019 4 2214 13/12/2019
1 11/12/2019 14/12/2019 4 2214 14/12/2019
2 15/12/2019 16/12/2019 2 8430 15/12/2019
2 15/12/2019 16/12/2019 2 8430 16/12/2019
До сих пор мне удавалось создать диапазон дат на основе pd.date_range, а затем попытаться добавить этот диапазон в качестве нового значения в фрейм данных ..
#generate a daily date range based on min and max values
date_range_to_add = pd.date_range(start=min(df['start_date'])
,end=max(df['end_date']),freq='D')
repeated_dw_data['dates']= date_range_to_add
Однако ошибка, которую я получаю, состоит в том, что длина значений не соответствует длине индекса. Очевидно, что сгенерированный диапазон дат короче, чем полный список строк.
Я думаю, мне придется создать функцию для генерации диапазона дат для каждой группы, добавить ее, а затем добавить в группу в новый фрейм данных. Но прежде чем я go пойдет по этому пути, есть ли что-то, что я пропускаю как более простой маршрут? Как лучше всего взаимодействовать с каждой группой и применять эту логику c?