我目前正在使用財務數據,缺少具體的財務數據。我想要做的是填充基於間隙長度的間隙,例如: - 如果間隙的長度低於5 NaN,則內插 - 如果長度大於5 NaN,則填充不同系列的值根據缺口長度填充缺口
所以我在這裏試圖完成的功能是掃描NaN系列,獲取它們的長度,然後適當地填充它們。我只是想推,就像我可以給大熊貓/ numpy的OPS,而不是做在循環等等
下面只是例子,這並不是最佳選擇可言:
ser = pd.Series(np.sort(np.random.uniform(size=100)))
ser[48:52] = None
ser[10:20] = None
def count(a):
tmp = 0
for i in range(len(a)):
current=a[i]
if not(np.isnan(current)) and tmp>0:
a[(i-tmp):i]=tmp
tmp=0
if np.isnan(current):
tmp=tmp+1
g = ser.copy()
count(g)
g[g<1]=0
df = pd.DataFrame(ser, columns=['ser'])
df['group'] = g
現在,我們希望內插當間隙< 10,把一些地方的差距> 9
df['ready'] = df.loc[df.group<10,['ser']].interpolate(method='linear')
df['ready'] = df.loc[df.group>9,['ser']] = 100
綜上所述,2個問題: - 熊貓能做到這一點可靠的方法? - 如果沒有,您可以提出什麼建議讓我的方式更健壯更快?讓我們把重點放在這裏2點:首先是這個系列的循環 - 一旦我擁有100個缺口系列,我們就會花費很長時間。也許像Numba?然後,我在副本上插入任何關於如何在原地進行建議的建議?
感謝在看看
感謝您使用極限參數進行輸入,但在這種情況下無法提供幫助 - 如果沒有此參數,您建議的參數將以完全相同的方式工作。一般來說,使用限制參數會使所有的間隙填充到指定的長度,而不是我要找的。 – lkbu