对矢量的Python三元运算

时间:2018-03-20 00:50:42

标签: python vector ternary

有人可以帮助我在向量上使用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().

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

提前致谢!

1 个答案:

答案 0 :(得分:1)

首先,您可以使用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'