df.loc[split_rows, 'end_date'] = df.loc[split_rows, 'start_date'
    ].dt.date + pd.DateOffset(days=1, seconds=-1)
df = df.append(new_rows).sort_index().reset_index(drop=True)
Pandas: разбивать интервалы даты и времени по дням