установка значения nan при интерполяции в scipy - PullRequest
0 голосов
/ 21 мая 2018

Я хочу интерполировать список значений (серии панд), используя scipy.interpolate.interp1d, устанавливая постоянное значение, когда входом является NAN.

Причина в том, что мне нужно умножитьдругой ряд для вывода интерполяции, и я хотел бы умножить на 1, это вход NAN

Прямо сейчас я сделал

import pandas as pd
import numpy as np
from scipy.interpolate import interp1d

X = [0,180,360]
Y = [1,10,1]
df = pd.DataFrame({'a':[1,2,3,4,5], 'b':[0,180, np.nan, 270, 999]})
interp=  interp1d(X, Y, kind='linear', bounds_error= False)
K = interp(df['b'])
K[[np.isnan(K)]] = 1
df['a'] = df['a'] * K

In [15]: df.a
Out[15]: 
0     1.0
1    20.0
2     3
3    22.0
4     5.0

Однако, поскольку df довольно большой, яискал что-то более прямое, что не требовало бы создания переменной K и проверки с помощью np.isnan вектора.Кроме того, это вызывает также раздражающие предупреждения во время interp1d.

Для точек вне интерполирующих границ я могу сделать

interp=  interp1d(X, Y, kind='linear', bounds_error= False, fill_value = 1)

, что позволило бы мне сделать

df['a'] = df['a'] * interp(df['b'])

, но, к сожалениюэто не обрабатывает «nan» в df ['b'].

Есть ли лучший способ достичь этого результата?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...