【发布时间】:2021-09-21 23:24:31
【问题描述】:
谁能告诉我这个 pandas 条件语句有什么问题?
dfm_Final['Pass'] = np.where(
dfm_Final['Percent_change'] >= 0.8 * dfm_Final['Agg_Percent_change'] &
dfm_Final['Percent_change'] <= 1.25 * dfm_Final['Agg_Percent_change'], True, False)
我正在尝试创建一个名为“Pass”的新列,其条件是“Percent_change”列值在“Agg_percent_change”值的 80% 到 125% 和“失败”之间时为“通过” ' 否则。谢谢。
【问题讨论】:
-
您不需要使用
np.where。无论如何,您的长条件都会返回一个真假列。 -
顺便说一句,
True可以是'Pass'和False可以是'Fail',而不是稍后进行后处理。 -
缺少括号是问题所在:
(dfm_Final['Percent_change'] >= (0.8 * dfm_Final['Agg_Percent_change'])) & (dfm_Final['Percent_change'] <= (1.25 * dfm_Final['Agg_Percent_change']))每个条件都需要放在括号中,因为&具有优先权。模式需要 ->(full condition 1) & (full condition 2)... -
还是不行。
标签: pandas dataframe conditional-statements