วิธีเปลี่ยนค่าของคอลัมน์ตามเงื่อนไขสองข้อใน Python

ฉันมีชุดข้อมูลที่มีเวลาในเกมและเวลาของเหตุการณ์

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

ฉันต้องการแทนที่ NaN ในคอลัมน์ EVENT โดยที่ GAME ‹ 0.24 ด้วยค่าในคอลัมน์ GAME

 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