Python 向量的三元运算

Python ternary operation on vectors

谁能帮我解决向量上 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().

有谁知道我可能做错了什么?

提前致谢!

首先,您可以使用 np.maximum(为简洁起见)将您的 if 条件合并为一个。性能也应该更高。

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'