Pandas:用于在 DataFrame 中设置值的三元条件运算符

Pandas: Ternary conditional operator for setting a value in a DataFrame(Pandas:用于在 DataFrame 中设置值的三元条件运算符)
本文介绍了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 - True1.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 中设置值的三元条件运算符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Leetcode 234: Palindrome LinkedList(Leetcode 234:回文链接列表)
How do I read an Excel file directly from Dropbox#39;s API using pandas.read_excel()?(如何使用PANDAS.READ_EXCEL()直接从Dropbox的API读取Excel文件?)
subprocess.Popen tries to write to nonexistent pipe(子进程。打开尝试写入不存在的管道)
I want to realize Popen-code from Windows to Linux:(我想实现从Windows到Linux的POpen-code:)
Reading stdout from a subprocess in real time(实时读取子进程中的标准输出)
How to call type safely on a random file in Python?(如何在Python中安全地调用随机文件上的类型?)