Панды, считывающие из файла csv и заполняющие пропущенные значения для индекса datetime

#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) значение.