2016-11-14 1 views
1

에() 보간, interpolate 좋은 작품 :팬더가 앞으로 뒤로 dataframe

 name days 
0  a  NaN 
1  a  NaN 
2  a   2 
3  a   3 
4  a  NaN 
5  a  NaN 

records.loc[:, 'days'].interpolate(method='linear', inplace=True) 

     name days 
0  a  NaN 
1  a  NaN 
2  a   2 
3  a   3 
4  a   4 
5  a   5 

... 그러나, 그것은 시작하는 행을 다루지 않는다 (앞으로 만 간다). limit_direction 매개 변수는 {‘forward’, ‘backward’, ‘both’}을 허용합니다. 이 작품들은 없습니다. 거꾸로 보간하는 적절한 방법이 있습니까?

일련 번호가 1 씩 증가하거나 감소한다고 가정 할 수 있습니다.이 예제에서는 0에서 시작하지 않을 수 있습니다.

+0

당신의 예제 * (6 rows shown) * 작동하지 않는다. (값은 마지막 알려진 값과 같을 것이다.)'interpolate'는'Nan' 이후에 첫 번째 유효한 값을 알아야 할 필요가있다. 값을 채울 행 사이의 차이점을 측정합니다. 따라서 선형 보간은 시작점과 끝점을 지정할 때 가장 잘 작동하므로 중간에 만나는 'NaN'값을 부드럽게 처리 할 수 ​​있습니다. –

+0

팬더의 현재 버전 (0.22)은 'limit_direction ='both '로 트릭을 수행하는 것으로 보입니다. NaN 값의 시작과 끝은 이제 ** 패딩 **이되었습니다. –

답변

1

그것이 유일한 매개 변수 limit 참조 docs [In 47] 작동 보인다

가 NaN 앞으로 값 채우기 위해 보간 수 있도록 제한 작동하는 limit_direction 키워드 인수를 추가, 뒤로, 또는 두 가지 모두 (GH9218, GH10420, GH11115)

records = pd.DataFrame(
{'name': {0: 'a', 1: 'a', 2: 'a', 3: 'a', 4: 'a', 5: 'a', 6: 'a', 7: 'a', 8: 'a', 9: 'a'}, 
'days': {0: 0.0, 1: np.nan, 2: np.nan, 3: np.nan, 4: 4.0, 5: 5.0, 6: np.nan, 7: np.nan, 8: np.nan, 9: 9.0}}, 
columns=['name','days']) 

print (records) 
    name days 
0 a 0.0 
1 a NaN 
2 a NaN 
3 a NaN 
4 a 4.0 
5 a 5.0 
6 a NaN 
7 a NaN 
8 a NaN 
9 a 9.0 
#by default limit_direction='forward' 
records['forw'] = records['days'].interpolate(method='linear', 
               limit=1) 
records['backw'] = records['days'].interpolate(method='linear', 
               limit_direction='backward', 
               limit=1) 
records['both'] = records['days'].interpolate(method='linear', 
               limit_direction='both', 
               limit=1) 
print (records) 
    name days forw backw both 
0 a 0.0 0.0 0.0 0.0 
1 a NaN 1.0 NaN 1.0 
2 a NaN NaN NaN NaN 
3 a NaN NaN 3.0 3.0 
4 a 4.0 4.0 4.0 4.0 
5 a 5.0 5.0 5.0 5.0 
6 a NaN 6.0 NaN 6.0 
7 a NaN NaN NaN NaN 
8 a NaN NaN 8.0 8.0 
9 a 9.0 9.0 9.0 9.0 
+0

선형 열이 채워진 전체 열을 가져올 수 있습니까? –

+0

출력을 열에 할당한다고 생각하십니까? – jezrael

+0

제공된 예제를 사용하면 처음 두 레코드에 누락 된 값이 있습니다. 이것은 문제를 만든다 –