So ändern Sie die Werte einer Spalte basierend auf zwei Bedingungen in Python


Nico Coallier

Ich habe einen Datensatz, in dem ich die Zeit in einem Spiel und die Zeit eines Ereignisses habe.

  EVENT     GAME
  0:34      0:43
  NaN       0:23
  2:34      3:43
  NaN       4:50

Ich möchte das NaN in der Spalte EVENT, wobei GAME <0,24 ist, durch den Wert in der Spalte GAME ersetzen.

 df['EVENT'][(df['GAME'] < '0:24') & (df['EVENT'] == 'NaN')] = df['GAME']

Ich habe es versucht, aber es funktioniert nicht. Entschuldigung, wenn es offensichtlich ist. Ich bin neu in Python.

Jezreel

Sie können isnullzur Überprüfung verwenden NaN:

df.loc[(df['GAME'] < '0:24') & (df['EVENT'].isnull()), 'EVENT'] = df['GAME']
print (df)

  EVENT  GAME
0  0:34  0:43
1  0:23  0:23
2  2:34  3:43
3   NaN  4:50

Eine andere Lösung mit mask:

mask = (df['GAME'] < '0:24') & (df['EVENT'].isnull())
df['EVENT'] = df['EVENT'].mask(mask, df['GAME'])
print (df)
  EVENT  GAME
0  0:34  0:43
1  0:23  0:23
2  2:34  3:43
3   NaN  4:50

Oder numpy.where:

df['EVENT'] = np.where(mask, df['GAME'], df['EVENT'])
print (df)
  EVENT  GAME
0  0:34  0:43
1  0:23  0:23
2  2:34  3:43
3   NaN  4:50

Verwandte Artikel