Pandas: интерполяция, где первая и последняя точка данных в столбце – NaN

Я хотел бы использовать функцию интерполяции, но только между известными значениями данных в столбце Pandas DataFrame. Проблема в том, что первое и последнее значения в столбце часто являются NaN, и иногда это может быть много строк до того, как значение не NaN:

col 1 col 2 0 NaN NaN 1 NaN NaN ... 1000 1 NaN 1001 NaN 1 <----- 1002 3 NaN <----- only want to fill in these 'in between value' rows 1003 4 3 ... 3999 NaN NaN 4000 NaN NaN 

Я связываю набор данных, который обновляется «по событию», но отдельно для каждого столбца, и индексируется через отметку времени. Это означает, что часто есть строки, где данные не записываются для некоторых столбцов, следовательно, много NaN!

One Solution collect form web for “Pandas: интерполяция, где первая и последняя точка данных в столбце – NaN”

Я выбираю min и max значение столбца по функции idxmin и idxmax и использую функцию fillna с методом форвардного заполнения.

 print df # col 1 col 2 #0 NaN NaN #1 NaN NaN #1000 1 NaN #1001 NaN 1 #1002 3 NaN #1003 4 3 #3999 NaN NaN #4000 NaN NaN df.loc[df['col 1'].idxmin(): df['col 1'].idxmax()] = df.loc[df['col 1'].idxmin(): df['col 1'].idxmax()].fillna(method='ffill') df.loc[df['col 2'].idxmin(): df['col 2'].idxmax()] = df.loc[df['col 2'].idxmin(): df['col 2'].idxmax()].fillna(method='ffill') print df # col 1 col 2 #0 NaN NaN #1 NaN NaN #1000 1 NaN #1001 1 1 #1002 3 1 #1003 4 3 #3999 NaN NaN #4000 NaN NaN 

Добавлено другое решение, спасибо HStro .

 df['col 1'].loc[df['col 1'].first_valid_index() : df['col 1'].last_valid_index()] = df['col 1'].loc[df['col 1'].first_valid_index(): df['col 1'].last_valid_index()].astype(float).interpolate() 
  • кадр данных python python, если else без повторения кадра данных мысли
  • транспонировать несколько столбцов Pandas dataframe
  • Bokeh: диаграмма из блока данных pandas не будет обновляться при запуске
  • неожиданные значения unicode в dataframe?
  • Добавление / вычитание столбцов Pandas
  • Pandas Plotting с Multi-Index
  • python / pandas: как объединить два фрейма данных в один с иерархическим индексом столбца?
  • Python Pandas: постоянный индекс даты
  • Python - лучший язык программирования в мире.