다음과 같은 시계열 데이터 프레임이 있습니다. 누락 된 값을 이전 값으로 채우고 싶습니다. 그러나 나는 단지 first_valid_index와 last_valid 인덱스 사이의 누락 된 값을 채우기를 원할 것입니다. 그래서 필자가 채우기를 원하는 열은 각 열마다 다를 것이다. 내가 어떻게 할 수 있니?팬더의 특정 열 2 개 사이의 널 (null)을 제거하십시오.
따라서이 데이터 프레임이 주어집니다.
import numpy as np
import pandas as pd
df = pd.DataFrame([[1, 2 ,3,np.nan,5], [1, 3 , np.nan , 4 , np.nan], [4, np.nan , 7 , np.nan,np.nan]], columns=[2007,2008,2009,2010,2011])
입력 dataframe :
2007 2008 2009 2010 2011
1 2 3 NaN 5
1 3 NaN 4 NaN
4 Nan 7 NaN NaN
출력 dataframe는 :
2007 2008 2009 2010 2011
1 2 3 3 5
1 3 3 4 NaN
4 4 7 NaN NaN
나는 first_valid_index 및 last_valid_index 새로운 열을 만든 다음 .apply()를 사용하여 생각하지만, 내가 어떻게 할 수 행마다 다른 열을 채우시겠습니까?
def fillMissing(x):
first_valid = int(x["first_valid"])
last_valid = int(x["last_valid"])
for i in range(first_valid,last_valid + 1):
missing.append(i)
#What should i do here since the following is not valid
#x[missing] = x[missing].fillna(method='ffill', axis=1)
df.apply(fillMissing , axis=1)
예제의 각 행마다 다른 열이 표시되지 않습니다. –
@GarbageCollector 감사합니다. 나는 그 예를 편집했다. 그래서 내가 어떻게 첫 번째 행에 2007과 2011 사이에 fillna 싶어요. 하지만 나는 3 행에서 2007 년과 2009 년 사이에 만 칠하고 싶습니다. –