Ich möchte fehlende Werte in einer Spalte mit fillna
Methoden aus einer anderen Spalte füllen .
(Ich habe gelesen, dass das Durchlaufen jeder Zeile eine sehr schlechte Übung wäre und dass es besser wäre, alles auf einmal zu machen, aber ich konnte nicht herausfinden, wie ich es machen soll fillna
.)
Daten vor:
Day Cat1 Cat2
1 cat mouse
2 dog elephant
3 cat giraf
4 NaN ant
Daten nach:
Day Cat1 Cat2
1 cat mouse
2 dog elephant
3 cat giraf
4 ant ant
fillna
das eine Serie braucht.Du könntest es tun
Das Gesamtkonstrukt auf der RHS verwendet das ternäre Muster aus dem
pandas
Kochbuch (das es sich in jedem Fall lohnt , es zu lesen). Es ist eine Vektorversion vona? b: c
.quelle
pd.DataFrame.fillna()
. Und ich vermute, dass sich das Verhalten in Eckfällen unterscheiden kann, z. B. bei nicht übereinstimmenden Serienlängen aus verschiedenen Datenrahmen: dfA ['Cat1'], dfB ['Cat2']Verwenden Sie einfach den
value
Parameter anstelle vonmethod
:quelle
value
ist der erste Parameter, also macht joris genau das Gleiche. Wie er sagte, siehe die Dokumente .method
dort zuerst aufgeführt.pandas.DataFrame.combine_first funktioniert auch.
( Achtung: Da "Ergebnisindexspalten die Vereinigung der jeweiligen Indizes und Spalten darstellen", sollten Sie überprüfen, ob der Index und die Spalten übereinstimmen. )
Vergleichen Sie mit anderen Antworten:
Ich habe diese Methode unten nicht angewendet:
weil es eine Ausnahme auslösen wird:
Dies bedeutet, dass np.isnan auf NumPy-Arrays vom nativen Typ (wie z. B. np.float64) angewendet werden kann, aber TypeError auslöst, wenn es auf Objektarrays angewendet wird .
Also überarbeite ich die Methode:
quelle
Hier ist ein allgemeinerer Ansatz (Fillna-Methode ist wahrscheinlich besser)
quelle
Ich weiß, dass dies eine alte Frage ist, aber ich musste in letzter Zeit etwas Ähnliches tun. Ich konnte Folgendes verwenden:
Welche Ausbeuten:
Hoffe das ist hilfreich für jemanden!
quelle