Pandas: Ternary conditional operator for setting a value in a 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
- True
是 1.0
和 >False
s 是 0.0
:
You can use numpy.where
or convert boolean Series
created by condition to float
- True
s are 1.0
and False
s 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 中设置值的三元条件运算符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Pandas:用于在 DataFrame 中设置值的三元条件运算符
基础教程推荐
- 线程时出现 msgbox 错误,GUI 块 2022-01-01
- 在 Python 中,如果我在一个“with"中返回.块,文件还会关闭吗? 2022-01-01
- 用于分类数据的跳跃记号标签 2022-01-01
- 如何让 python 脚本监听来自另一个脚本的输入 2022-01-01
- Python kivy 入口点 inflateRest2 无法定位 libpng16-16.dll 2022-01-01
- 如何在海运重新绘制中自定义标题和y标签 2022-01-01
- 何时使用 os.name、sys.platform 或 platform.system? 2022-01-01
- 使用PyInstaller后在Windows中打开可执行文件时出错 2022-01-01
- 筛选NumPy数组 2022-01-01
- Dask.array.套用_沿_轴:由于额外的元素([1]),使用dask.array的每一行作为另一个函数的输入失败 2022-01-01