it-swarm.com.de

Pandas DataFrame: Ersetzen Sie alle Werte in einer Spalte, basierend auf der Bedingung

Ich habe einen einfachen DataFrame wie den folgenden:

Pandas DataFrame

Ich möchte alle Werte aus der Spalte "Erste Staffel" auswählen und die Werte aus dem Jahr 1990 durch 1 ersetzen. In diesem Beispiel würde nur Baltimore Ravens das Jahr 1996 durch 1 ersetzen (wobei die restlichen Daten erhalten bleiben).

Ich habe folgendes benutzt:

df.loc[(df['First Season'] > 1990)] = 1

Es ersetzt jedoch alle Werte in dieser Zeile durch 1 und nicht nur die Werte in der Spalte "Erste Staffel".

Wie kann ich nur die Werte aus dieser Spalte ersetzen?

85
ichimok

Sie müssen diese Spalte auswählen:

In [41]:
df.loc[df['First Season'] > 1990, 'First Season'] = 1
df

Out[41]:
                 Team  First Season  Total Games
0      Dallas Cowboys          1960          894
1       Chicago Bears          1920         1357
2   Green Bay Packers          1921         1339
3      Miami Dolphins          1966          792
4    Baltimore Ravens             1          326
5  San Franciso 49ers          1950         1003

Die Syntax hier lautet also:

df.loc[<mask>(here mask is generating the labels to index) , <optional column(s)> ]

Sie können die docs und auch die 10 Minuten bis Pandas überprüfen, die die Semantik zeigt

[~ # ~] edit [~ # ~]

Wenn Sie einen Booleschen Indikator generieren möchten, können Sie einfach die Boolesche Bedingung verwenden, um eine Boolesche Reihe zu generieren und den D-Typ in int umzuwandeln. Dadurch werden True und False in 1 Bzw. 0:

In [43]:
df['First Season'] = (df['First Season'] > 1990).astype(int)
df

Out[43]:
                 Team  First Season  Total Games
0      Dallas Cowboys             0          894
1       Chicago Bears             0         1357
2   Green Bay Packers             0         1339
3      Miami Dolphins             0          792
4    Baltimore Ravens             1          326
5  San Franciso 49ers             0         1003
145
EdChum

Ein bisschen zu spät zur Party, aber trotzdem - ich bevorzuge numpy wo:

import numpy as np
df['First Season'] = np.where(df['First Season'] > 1990, 1, df['First Season'])
21
Amir F