如何根据Python

时间:2017-04-05 13:32:34

标签: python pandas dataframe

我有一个数据集,我在游戏中有时间和事件的时间。

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

我想替换EVENT列中的NaN,其中GAME< 0.24乘以GAME列中的值。

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

我试过这个但它不起作用。对不起,如果很明显。我是Python的新手。

1 个答案:

答案 0 :(得分:7)

您可以使用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