Я бы взял подход к созданию пустой таблицы и заполнил ее данными, полученными из вашего источника данных. Для этого примера три наблюдения читаются как NaN, плюс отсутствует строка для 1:15 и 1:20.
import pandas as pd
import numpy as np
rawpd = pd.read_excel('raw.xlsx')
print(rawpd)
Date Time Col1 Col2
0 2018-04-01 01:00:00 1.0 10.0
1 2018-04-01 01:05:00 2,0 NaN
2 2018-04-01 01:10:00 NaN 10,0
3 2018-04-01 01:20:00 NaN 10,0
4 2018-04-01 01:30:00 5.0 10.0
Теперь создайте файл данных с идеальной структурой.
time5min = pd.date_range(start='2018/04/1 01:00',periods=7,freq='5min')
targpd = pd.DataFrame(np.nan,index = time5min,columns=['Col1','Col2'])
print(targpd)
Col1 Col2
2018-04-01 01:00 : 00 NaN NaN
2018-04-01 01:05:00 NaN NaN
2018-04-01 01:10:00 NaN NaN
2018-04-01 01:15:00 NaN NaN
2018-04-01 01:20:00 NaN NaN
2018-04-01 01:25:00 NaN NaN
2018-04-01 01:30:00 NaN NaN
Теперь дело в том, чтобы обновить targpd данными, отправленными вам в rawpd. Чтобы это произошло, столбцы даты и времени должны быть объединены в rawpd и преобразованы в индекс.
print(rawpd.Date,rawpd.Time)
0 2018-04-01
1 2018-04-01
2 2018 -04-01
3 2018-04-01
4 2018-04-01
Имя: Дата, тип: datetime64 [нс]
0 01: 00: 00
1 01:05:00
2 01:10:00
3 01:20:00
4 01:30:00
Имя: Время, dtype: object
Вы можете видеть выше хитрость во всем этом. Ваши данные даты были преобразованы в datetime, но ваши данные времени - просто строка. Ниже надлежащий индекс создается с помощью функции lambda .
rawidx=rawpd.apply(lambda r : pd.datetime.combine(r['Date'],r['Time']),1)
print(rawidx)
Это можно применить к базе данных rawpd в качестве индекса.
rawpd2=pd.DataFrame(rawpd[['Col1','Col2']].values,index=rawidx,columns=['Col1','Col2'])
rawpd2=rawpd2.sort_index()
print(rawpd2)
Once эта команда обновления может получить то, что вы хотите.
targpd.update(rawpd2,overwrite=True)
print(targpd)
Col1 Col2
2018-04-01 01:00:00 1.0 10.0
2018-04-01 01 : 00: 00 1,0 10,0
2018-04-01 01:05:00 2,0 NaN
2018-04-01 01:10:00 NaN 10,0
2018- 04-01 01:15:00 NaN NaN
2018-04-01 01:20:00 NaN 10.0
2018-04-01 01:25:00 NaN NaN
2018-04-01 01:30:00 5,0 10,0
2018-04-01 01:05:00 2,0 NaN
2018-04-01 01:10:00 NaN 10,0
2018-04-01 01:15:00 NaN NaN
2018-04-01 01:20:00 NaN 10.0
2018-04-01 01:25 : 00 NaN NaN
2018-04-01 01:30:00 5.0 10.0
Теперь у вас есть файл, готовый для интерполяции