python pandas 新增列用if else 根据其他列条件进行赋值

R语言转成python. 求助

R 语言如下

SingleMstepResult['ratio'] = ifelse(SingleMstepResult['P90']>SingleMstepResult['refUL'], 
                                     SingleMstepResult['P90']/SingleMstepResult['refUL']-1,
                                     1-SingleMstepResult['P10']/SingleMstepResult['refLL'])

Python 写成下面的不对

SingleMstepResult['ratio'] = (SingleMstepResult['P90']/SingleMstepResult['refUL']-1) if (SingleMstepResult['P90']>SingleMstepResult['refUL']) 

                                     else (SingleMstepResult['P10']/SingleMstepResult['refLL'])
阅读 4.9k
1 个回答

最简单的是借助 np.where(条件复杂的话用 np.select),其次是 df.apply,接着是 df.iterrows。比如:

import numpy as np # 如果之前没有导入的话
SingleMstepResult['ratio'] = np.where(SingleMstepResult['P90'] > SingleMstepResult['refUL'], SingleMstepResult['P90'] / df['refUL'] - 1, 1 - SingleMstepResult['P10']/SingleMstepResult['refLL'])
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏