Как изменить значения столбца на основе двух условий в Python

У меня есть набор данных, где у меня есть время в игре и время события.

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

Я хочу заменить NaN в столбце СОБЫТИЕ, где ИГРА ‹ 0,24, на значение в столбце ИГРА.

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

Я пробовал это, но это не работает. Извините, если это очевидно. Я новичок в Python.


person Nico Coallier    schedule 05.04.2017    source источник


Ответы (1)


Вы можете использовать isnull для проверки 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

Другое решение с 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

Или 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
person jezrael    schedule 05.04.2017