Ausgabe
Ich habe einen Datenrahmen mit zwei Spalten. Spalte A enthält die Werte 0 und 1 und Spalte B enthält die Werte 0 und 99. So etwa:
df = pd.DataFrame({'A': [0,0,0,1,1,0,0,1,1,0],
'B': [99,1,0,99,99,1,1,99,99,99]})
A B
0 0 99
1 0 1
2 0 0
3 1 99
4 1 99
5 0 1
6 0 1
7 1 99
8 1 99
9 0 99
Ich muss alle Werte von 99 durch 0 in Spalte B ersetzen, wenn der entsprechende Wert von Spalte A 1 ist, und ich habe Folgendes versucht:
df = df[df['A']==1].replace({'B': {99: 0}})
A B
3 1 0
4 1 0
7 1 0
8 1 0
aber wenn ich das versuche, verliere ich den Teil des Datenrahmens, in dem A 0 ist. Wie kann ich das ausführen, ohne diesen Teil zu verlieren?
Lösung
Hier ist eine Möglichkeit, dies zu tun
using Loc
df.loc[(df['A']== 1) & (df['B']==99), 'B'] = 0
df
ODER
# using mask
df['B']= df['B'].mask((df['A']== 1) & (df['B']==99), 0)
df
A B
0 0 0
1 0 1
2 0 0
3 1 0
4 1 0
5 0 1
6 0 1
7 1 0
8 1 0
9 0 0
Beantwortet von – Naveed
Antwort geprüft von – Marie Seifert (FixError Admin)