【问题标题】:Need help on creating a conditional statement in pandas在 Pandas 中创建条件语句时需要帮助
【发布时间】: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'] &gt;= (0.8 * dfm_Final['Agg_Percent_change'])) &amp; (dfm_Final['Percent_change'] &lt;= (1.25 * dfm_Final['Agg_Percent_change'])) 每个条件都需要放在括号中,因为&amp; 具有优先权。模式需要 -> (full condition 1) &amp; (full condition 2)...
  • 还是不行。

标签: pandas dataframe conditional-statements


【解决方案1】:

就像评论中提到的,你不需要np.where,也可以使用()

dfm_Final['Pass'] = 
    (dfm_Final['Percent_change'] >= 0.8 * dfm_Final['Agg_Percent_change']) &
    (dfm_Final['Percent_change'] <= 1.25 * dfm_Final['Agg_Percent_change'])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-13
    • 1970-01-01
    • 2012-02-04
    • 1970-01-01
    • 2023-02-12
    • 1970-01-01
    • 1970-01-01
    • 2021-05-31
    相关资源
    最近更新 更多