I는 dataframe있는 행에 다른 셀의 값을 도출하는 NaN 값 열의 셀을 채우팬더
I 열 충전 할 a b c
0 1 2 3
1 1 1 1
2 3 7 NaN
3 2 3 5
...
"세"인플레 이스 (값을 갱신)를 어디에 값은 기계 학습 알고리즘을 사용하는 NaN입니다.
어떻게해야할지 모르겠다. 샘플 코드 :
import pandas as pd
import numpy as np
from sklearn.linear_model import LinearRegression
df=pd.DataFrame([range(3), [1, 5, np.NaN], [2, 2, np.NaN], [4,5,9], [2,5,7]],columns=['a','b','c'])
x=[]
y=[]
for row in df.iterrows():
index,data = row
if(not pd.isnull(data['c'])):
x.append(data[['a','b']].tolist())
y.append(data['c'])
model = LinearRegression()
model.fit(x,y)
#this line does not do it in place.
df[~df.c.notnull()].assign(c = lambda x:model.predict(x[['a','b']]))
그러나 이것은 데이터 프레임 사본을 제공합니다. 그러나 내가 가지고있는 옵션은 for 루프를 사용하고 있지만, 그렇게하고 싶지는 않습니다. 나는 판다를 사용하여 그것을하는 더 평범한 방법이 있어야한다고 생각합니다. 누군가 도와 주실 수 있습니까? 아니면 이것을하는 다른 방법이 있습니까?
model.predict는 정수를 반환합니다. 문제는 예측하는 것이 행의 다른 셀에서 값을 가져 오는 방법을 알아낼 수 없다는 것입니다. 나는 당신이 제안한 것을 시도했지만 작동하지 않았다 :'df.loc [~ df.three.notnull() and ++ i> 0, 'three'] = model.predict (df.iloc [[i]] [[ ''one ','two ']]. values.tolist() [1])'도와 주시겠습니까? – harshit
'didnt work'는별로 정확하지 않습니다. 또한'model.predict'에 대한 더 많은 정보를 추가하기 위해 질문을 편집 할 수 있습니까? 더 많은 정보를 얻으려면 재현 할 수있는 코드가 필요합니다. – knightofni
샘플 코드 – harshit