Cara mengubah nilai kolom berdasarkan dua kondisi dengan Python

Saya memiliki kumpulan data di mana saya memiliki waktu dalam permainan dan waktu suatu acara.

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

Saya ingin mengganti NaN pada kolom EVENT dimana GAME ‹ 0,24 dengan nilai pada kolom GAME.

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

Saya sudah mencoba ini tetapi tidak berhasil. Maaf jika sudah jelas. Saya baru mengenal Python.


person Nico Coallier    schedule 05.04.2017    source sumber


Jawaban (1)


Anda dapat menggunakan isnull untuk pemeriksaan 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

Solusi lain dengan 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

Atau 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