Ausgabe
Ich habe einen Datenrahmen, der zwei Spalten enthält, von denen eine als Treffer bezeichnet wird:
0 NaN
1 5.0
2 NaN
3 5.0
4 NaN
...
295 NaN
296 NaN
297 NaN
298 NaN
299 NaN
und eine weitere Spalte namens converted:
0 0
1 0
2 0
3 0
4 0
..
345 0
346 1
347 0
348 1
349 0
Was ich tun möchte, ist zu überprüfen, ob die Zeile in der konvertierten Spalte 0 oder 1 hat, wenn sie 0 hat, hat die Zeile in Treffern den Wert 6 (er ersetzt den Nullwert) und wenn sie 1 hat, wird sie die ersetzen Wert mit 9
Ich habe versucht, Lambda zu verwenden, gab mir aber kein gutes Ergebnis:
df['hits'] = df.apply(
lambda row: 9 if df['converted'] == 1 & df['hits'] == 'nan' else 6
,axis=1)
Lösung
Sie müssen die df
lokale Variable ändernrow
df['hits'] = df.apply(
lambda row: 9 if row['converted'] == 1 & pd.isnull(row['hits']) else 6
,axis=1)
Oder mit boolescher Maskierung
df.loc[df['converted'].eq(0) & df['hits'].isna(), 'hits'] = 6
df.loc[df['converted'].eq(1), 'hits'] = 9
Beantwortet von – Ynjxsjmh
Antwort geprüft von – Pedro (FixError Volunteer)