Ich muss die NaN-Werte in einer Spalte mit dem zurückgegebenen Wert einer API ändern. Ich habe bereits eine Funktion geschrieben, die die Funktion aufruft und einen Wert zurückgibt, aber ich bin mir nicht sicher, wie ich die Werte jetzt ändern soll. Muss ich den gesamten DataFrame durchlaufen oder gibt es andere Lösungen? Der Datenrahmen sieht so aus:
Spaltenname1 | Spaltenname2 | Spaltenname3 |
---|---|---|
ein | 2 | 3 |
4 | 5 | 6 |
7 | acht | neun |
NaN | elf | 12 |
Lösung des Problems
Sie können verwenden apply
. Das Beste ist, zuerst die Zeilen mit NaNs zu unterteilen, um zu vermeiden, dass die API für die anderen Werte angefordert wird:
def api_func(a, b):
return 10
# mask of the rows with NaN in colname1
m = df['colname1'].isna()
# output of API request
s = df.loc[m].apply(lambda r: api_func(r['colname2'], r['colname3']), axis=1)
# updating the column (in place)
df['colname1'].update(s)
Ausgang:
colname1 colname2 colname3
0 1.0 2 3
1 4.0 5 6
2 7.0 8 9
3 10.0 11 12
Keine Kommentare:
Kommentar veröffentlichen