有人可以帮助我在向量上使用python三元操作的正确格式吗?我有两个数据帧温度:df_today
和df_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().
有谁知道我可能做错了什么?
提前致谢!
答案 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'