Python 向量的三元运算
Python ternary operation on vectors
谁能帮我解决向量上 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().
有谁知道我可能做错了什么?
提前致谢!
首先,您可以使用 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'
谁能帮我解决向量上 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().
有谁知道我可能做错了什么?
提前致谢!
首先,您可以使用 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'