本文介绍了Pandas:用于在 DataFrame 中设置值的三元条件运算符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!
问题描述
我有一个数据框 pd.我想更改列 irr 的值,具体取决于它是高于还是低于阈值.
I have a dataframe pd. I would like to change a value of column irr depending on whether it is above or below a thresh hold.
我怎样才能在一行中做到这一点?现在我有
How can I do this in a single line? Now I have
pd['irr'] = pd['irr'][pd['cs']*0.63 > pd['irr']] = 1.0
pd['irr'] = pd['irr'][pd['cs']*0.63 <= pd['irr']] = 0.0
问题当然是我改了irr,在下一行再次检查.
The problem of course is that I change irr and check it again in the next line.
是否有类似 pandas 的三元条件运算符?
Is there something like a ternary conditional operator for pandas?
推荐答案
在 pandas 中没有,在 numpy 中是.
In pandas no, in numpy yes.
您可以使用 numpy.where 或将条件创建的 boolean Series 转换为 float - True 是 1.0 和 >Falses 是 0.0:
You can use numpy.where or convert boolean Series created by condition to float - Trues are 1.0 and Falses are 0.0:
pd['irr'] = np.where(pd['cs']*0.63 > pd['irr'], 1.0, 0.0)
或者:
pd['irr'] = (pd['cs']*0.63 > pd['irr']).astype(float)
示例:
pd = pd.DataFrame({'cs':[1,2,5],
'irr':[0,100,0.04]})
print (pd)
cs irr
0 1 0.00
1 2 100.00
2 5 0.04
pd['irr'] = (pd['cs']*0.63 > pd['irr']).astype(float)
print (pd)
cs irr
0 1 1.0
1 2 0.0
2 5 1.0
这篇关于Pandas:用于在 DataFrame 中设置值的三元条件运算符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!
The End


大气响应式网络建站服务公司织梦模板
高端大气html5设计公司网站源码
织梦dede网页模板下载素材销售下载站平台(带会员中心带筛选)
财税代理公司注册代理记账网站织梦模板(带手机端)
成人高考自考在职研究生教育机构网站源码(带手机端)
高端HTML5响应式企业集团通用类网站织梦模板(自适应手机端)