Ich habe einen Datenrahmen:Pandas füllen Zellen in einer Spalte mit NaN Werten leiten den Wert von anderen Zellen in der Reihe
a b c
0 1 2 3
1 1 1 1
2 3 7 NaN
3 2 3 5
...
I Spalte „drei“ Inplace füllen wollen (die Werte aktualisieren), wo die Werte sind NaN unter Verwendung eines maschinellen Lernalgorithmus.
Ich weiß nicht, wie es inplace. Beispielcode:
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']]))
Aber das gibt mir eine Kopie des Datenrahmens. Die einzige Option, die ich noch habe, ist eine for-Schleife, aber das möchte ich nicht tun. Ich denke, es sollte mehr pythonischer Weg sein, es mit Pandas zu machen. Kann mir bitte jemand helfen? Oder gibt es einen anderen Weg, dies zu tun?
model.predict gibt eine ganze Zahl zurück. Das Problem ist vorhersagen nimmt die Werte in den anderen Zellen der Reihe, die ich nicht herausfinden kann, wie man gibt. Ich habe versucht, was Sie vorgeschlagen, aber es hat nicht funktioniert: 'df.loc [~ df.three.notnull() und ++ i> 0, 'drei'] = model.predict (df.iloc [[i]] [['eins', 'zwei']]. values.tolist() [1]) 'Können Sie bitte helfen und die Lösung geben? – harshit
'nicht funktioniert' ist nicht sehr genau. Kannst du die Frage auch bearbeiten, um mehr Informationen über 'model.predict' hinzuzufügen? Reproduzierbarer Code wird benötigt, um tiefer zu gehen. – knightofni
aktualisiert mit Beispielcode – harshit