Python中是否存在与R语言ifelse功能类似的函数?
Python对应R语言
ifelse()功能的实现方案 R语言的ifelse(test_expression, x, y)支持标量、向量两种场景的条件判断返回,Python中对应实现分为以下几种常见情况:
- 标量场景:使用Python原生三元条件表达式
语法为x if test_expression else y,和R标量下的ifelse效果完全一致
示例:# 等同于R的 ifelse(5>3, "符合", "不符合") res = "符合" if 5>3 else "不符合" # 输出结果:"符合" - 向量化场景:使用Numpy库的
where函数
R的ifelse本身支持逐元素判断的向量化操作,Python中对应np.where(test_expression_arr, x, y),用法和R的ifelse几乎完全一致
示例:import numpy as np arr = np.array([-2, 1, 0, 4, -5]) # 等同于R的 ifelse(arr>0, 1, 0) res = np.where(arr>0, 1, 0) # 输出结果:array([0, 1, 0, 1, 0]) - Pandas序列场景的补充实现
针对Pandas的Series对象,除了可以使用np.where外,也可以用apply方法结合三元表达式实现更复杂的自定义条件逻辑
示例:import pandas as pd s = pd.Series([-2, 1, 0, 4, -5]) res = s.apply(lambda val: "正数" if val>0 else ("零" if val==0 else "负数")) # 输出结果:0 负数 # 1 正数 # 2 零 # 3 正数 # 4 负数 # dtype: object
内容的提问来源于stack exchange,提问作者Artem T
相关产品推荐
相关产品推荐

