Pandas Функция интерполяции накладывает ограничение на индекс? - PullRequest
0 голосов
/ 21 февраля 2020

Я ожидал, что pandas интерполирует "значения", чтобы иметь возможность обрабатывать произвольные индексы, но, возможно, нет. Рассмотрим

   import pandas as pd
   import numpy as np
   dm = pd.DataFrame(index=[0, 4, 3, 2],data={"Col1":[1,2,np.NaN,6]})
   print(dm)

   print ("Expecting: ", 2+(3-4)/(2-4)*(6-2))
   dm = dm.interpolate(method='values')
   print(dm)

, но нет ... Я получаю ожидаемый ответ, только если значения индекса расположены в порядке возрастания, а неизвестное значение находится между ними. Есть ли флаг, который я могу добавить к функции интерполяции?

1 Ответ

0 голосов
/ 21 февраля 2020

Вы можете интерполировать отсортированные по индексу pd.Series.

dm["Col1"] = dm["Col1"].sort_index().interpolate(method='values')
>>> dm
   Col1
0   1.0
4   2.0
3   4.0
2   6.0

Хитрость заключается в том, чтобы сохранить исходный индекс в такте при сортировке для интерполяции. Потому что информационный фрейм слева получит правильные значения фрейма данных справа, в соответствии с его индексом и независимо от фактического порядка.

...