Czy jest możliwe wyprodukowanie serii, która interpoluje jej wartość dla dowolnego indeksu. Mam predefiniowany schemat interpolacji, który chcę przepisać i wolałbym, aby osoba dzwoniąca sama nie zastosowała interpolacji, aby uniknąć jakichkolwiek możliwości błędu.Czy można skonstruować serię Pand, która automatycznie interpoluje?
class InterpolatedSeries(pd.Series):
pass # magic?
s = pd.Series([1, 3], index=[1, 3])
i = InterpolatedSeries(s, forward='nearest', backward='nearest', middle='linear')
Dzwoniący otrzyma i
w wyniku i mogą teraz żądać żadnej wartości, a byłbym przekonany, wartość dostali, dostosowany przepisanej schematu interpolacji. Interpolacja z pewnością nie byłaby obliczalna (ponieważ nie wiemy, które punkty zażądają z wyprzedzeniem) lub buforowana (ponieważ nie wiemy, ile punktów będą wymagać), ale co ważne, nie ma żadnych komplikacji dla dzwoniącego.
Czy to możliwe?
>>> i[[0, 0.11234, 1, 2, 2.367, 3, 4]]
... pd.Series([1, 1, 1, 2, 2.367, 3, 3], index=[0, 0.11234, 1, 2, 2.367, 3, 4])
Czy możesz dokładniej określić, dlaczego chcesz, aby była to podklasa pd.Series? – DSM
Intencją jest, aby funkcja biblioteczna zwracała coś, co do wszystkich celów zachowuje się z tym samym interfejsem, co pd.Series. Aby użytkownik mógł .to_csv, groupby itp., Gdyby chciał. – poulter7
sprawdzić metody magii python. Prawdopodobnie możesz po prostu interpolować, gdy ustawisz wartość elementu. '__setitem__' jest wywoływane, gdy zmieniasz wartość pozycji' i [0] = 1', więc w metodzie '__setitem__' interpolujesz wartości przed ich ustawieniem lub ustaw wartość interpolując wszystkie wartości, następnie zresetuj wartości. Możesz także użyć '__getitem__' do interpolacji, gdy ktoś zapyta o wartość' variable = i [0] '. – HashSplat