如何比较同一数据框的两列?


问题内容

我有一个这样的数据框:

 match_id inn1  bat  bowl  runs1 inn2   runs2   is_score_chased
    1     1     KKR  RCB    222  2      82          1
    2     1     CSK  KXIP   240  2      207         1
    8     1     CSK  MI     208  2      202         1
    9     1     DC   RR     214  2      217         1
   33     1     KKR  DC     204  2      181         1

现在,我想通过比较 runs1*runs2中 的值来更改 is_score_chased 列中的值。如果runs1>
runs2,则该行中的对应值应为 “ yes”, 否则应为 no 。我尝试了以下代码:
***

for i in (high_scores1):
  if(high_scores1['runs1']>=high_scores1['runs2']):
      high_scores1['is_score_chased']='yes'
  else:
      high_scores1['is_score_chased']='no'

但这没有用。如何更改列中的值?


问题答案:

您可以更轻松地使用np.where

high_scores1['is_score_chased'] = np.where(high_scores1['runs1']>=high_scores1['runs2'], 
                                           'yes', 'no')

通常,如果您发现自己试图像设置列那样进行显式迭代,则会有一个类似apply或的抽象where,它将更快,更简洁。