#python #pandas
#python #pandas
Вопрос:
У меня есть данные в файле csv, который отображается как:
DateTime Temp
10/1/2016 0:00 20.35491156
10/1/2016 1:00 19.75320845
10/1/2016 4:00 17.62411292
10/1/2016 5:00 18.30190001
10/1/2016 6:00 19.37101638
Я читаю этот файл в файл csv как:
import numpy as np
import pandas as pd
data = pd.read_csv(r'C:Curve.csv', index_col='DateTime')
newIndex = pd.date_range(np.min(data.index), np.max(data.index),freq='1H')
data.reindex(newIndex)
Моя цель — заполнить недостающие часы 2 и 3 с помощью 19.75320845. т.е. Каждый раз, когда отсутствуют данные, он должен выполнять обратную засыпку.
Комментарии:
1.
data.resample('1H').pad()
должно получиться просто отлично. Просто убедитесь, чтоdata.index
этоpandas datetime
тип перед повторной выборкой.
Ответ №1:
import pandas as pd
data = pd.read_csv(r'Curve.csv', index_col='DateTime', parse_dates=['DateTime'])
data = data.asfreq('1H', method='ffill')
дает
Temp
DateTime
2016-10-01 00:00:00 20.354912
2016-10-01 01:00:00 19.753208
2016-10-01 02:00:00 19.753208
2016-10-01 03:00:00 19.753208
2016-10-01 04:00:00 17.624113
2016-10-01 05:00:00 18.301900
2016-10-01 06:00:00 19.371016
method='ffill'
указывает asfreq
«перенаправить» пропущенные значения, используя
последнее допустимое (не NaN) значение.