У меня есть df, который содержит одну строку на элемент с диапазоном дат, и мне нужно расширить его, чтобы он содержал одну строку в день на элемент.
Это выглядит так:
from to id
1 25/02/2019 27/02/2019 A
2 15/07/2019 16/07/2019 B
И я хочу вот что:
date id
1 25/02/2019 A
2 26/07/2019 A
3 27/07/2019 A
4 15/07/2019 B
5 16/07/2019 B
Мне удалось написать код, который работает, но его запуск занимает более часа, поэтому мне интересно, есть ли более эффективный способ сделать это.
Мой код:
df_dates = pd.DataFrame()
for i in range(len(df)):
start = df.loc[i]['from']
end = df.loc[i]['to'] + np.timedelta64(1,'D') #includes last day of the range
dates = np.arange(start, end, dtype='datetime64[D]')
temp = pd.DataFrame()
temp = temp.append([df.loc[i]]*len(dates), ignore_index=True)
temp['datadate'] = dates
df_dates = df_dates.append(temp, ignore_index=True)
Это займет много времени, потому что реальные диапазоны составляют около 50 лет с более чем 1700 предметами, поэтому новый ДФ огромен, но, возможно, вы знаете хитрость, чтобы сделать так же быстрее :)