對於任何給定的索引,是否可以生成一個插值它的值的序列。我有一個預定義的插值方案,我希望規定,我寧願調用者不自己應用插值,以避免任何錯誤的可能性。是否可以構建一個自動插值的熊貓系列?
class InterpolatedSeries(pd.Series):
pass # magic?
s = pd.Series([1, 3], index=[1, 3])
i = InterpolatedSeries(s, forward='nearest', backward='nearest', middle='linear')
主叫方將收到i
結果,他們現在可以要求任何價值,而且我確信他們得到了符合規定的插值方案的價值。插值當然不是可預先計算的(因爲我們不知道他們會提前請求哪些點)還是可緩存的(因爲我們不知道他們要求多少點),但重要的是沒有併發症爲來電者。
這可能嗎?
>>> 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])
你可以更具體地說明你爲什麼希望這是pd.Series的子類嗎? – DSM
這個意圖是讓庫函數返回一個爲了所有目的而與pd.Series具有相同接口的東西。 因此,用戶可以.to_csv或groupby等,如果他們想。 – poulter7
查閱python魔術方法。您可能只需在設置項目值時進行插值。當你改變一個項目值'i [0] = 1'時調用'__setitem__',所以在'__setitem__'方法中,在設置它們之前插入值,或者設置值插值所有值然後重置價值。當有人要求值'variable = i [0]'時,你也可以使用'__getitem__'進行插值。 – HashSplat