[FIXED] Ersetzen Sie den Wert in der Spalte im Pandas-Datenrahmen basierend auf einem anderen Spaltenwert in derselben Zeile?

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)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like