向量上的Python三元运算

特朗·特兰

有人可以帮我对向量执行python三元运算的正确格式吗?我有两个数据框温度:df_todaydf_yesterday我正在尝试计算新列df_today以确定温度是否比昨天高:

df["warmer_than_yesterday"] = 'yes, warmer' if df["temp_celsius"] > df_yesterday["temp_celsius"] and df["temp_celsius"] > 10 else 'nah, not warmer'

但是,我不断收到错误消息 ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

有人知道我可能做错了吗?

提前致谢!

cs95

首先,可以将您的if条件组合为一个np.maximum(为了简洁)。还应该表现得更好。

m = df["temp_celsius"] > np.maximum(10, df_yesterday["temp_celsius"]) 

现在,将此面具传递给np.where

df["warmer_than_yesterday"] = np.where(m, 'yes', 'no')

loc设置切片:

df["warmer_than_yesterday"] = 'no'
df.loc[m, "warmer_than_yesterday"] = 'yes'

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章