현재 재무 데이터가 누락되었습니다. 재무 데이터가 누락되었습니다. 내가 뭘 하려는지 간격 길이를 기준으로 간격을 채우는 것입니다 : - 간격의 길이가 5 NaN보다 작은 경우, 다음을 삽입합니다. - 길이가> 5 NaN 인 경우 다른 계열의 값으로 채우기간격 길이를 기준으로 채우는 간격
그래서 여기에서 달성하려는 것은 NaN 시리즈를 스캔하여 길이를 얻은 다음 적절하게 채울 수있는 함수입니다.
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
이제 우리가 원하는 : 난 그냥 단지 예를 아래
, 이것은 전혀 최적이 아닌 ... 나는/NumPy와 작전을 판다하지 등 루프에 그것을 할 수있는만큼 밀어 원 차이가 < 10 때 보간하고,이 질문에 격차가> 9df['ready'] = df.loc[df.group<10,['ser']].interpolate(method='linear')
df['ready'] = df.loc[df.group>9,['ser']] = 100
요약하면 뭔가 넣어 : 은 - 팬더가 강력한 방법 할 수 있습니까? - 그렇지 않다면 더 강력하고 신속하게 내 길을 제안 할 수 있습니까? 여기서 2 포인트에 집중할 수 있습니다 : 처음에는 시리즈 이상의 루프가 있습니다 - 예를 들어, 갭이있는 100 시리즈가되면 나이가들 것입니다. Numba 같은 뭔가? 그런 다음, 어떻게 삽입 할 것인지에 대한 제안을 복사합니다. 당신은 보간의 한계 매개 변수를 활용할 수있는 모습
한계 매개 변수를 입력 해 주셔서 감사합니다.하지만 제안한이 사례 라인에서 도움이되지 않는 경우 제안하지 않으면 정확히 같은 방식으로 작동합니다. 그리고 일반적으로 한계 매개 변수를 사용하면 모든 간격이 지정된 길이로 채워지는 것이고 내가 찾던 것이 아닙니다. – lkbu