【问题标题】:New column based in multiple conditions基于多个条件的新列
【发布时间】:2018-09-08 07:06:45
【问题描述】:
     a    b
0  100   90
1   30  117
2   90   99
3  200   94

我想用下一个条件创建一个新的df["c"]

  • 如果a > 50 和b 进入(a ± 0.5a),那么c = a
  • 如果a > 50 和b 不在(a ± 0.5a),那么c = b
  • 如果a <= 50,那么*c = a*

输出应该是:

     a    b    c
0  100   90  100
1   30  117   30
2   90   99   90
3  200   94   94

我试过了:

df['c'] = np.where(df.eval("0.5 * a <= b <= 1.5 * a"), df.a, df.b)

但我不知道如何在这句话中包含最后一个条件(If a &lt;= 50, then c = a)

【问题讨论】:

    标签: python pandas conditional


    【解决方案1】:

    你就快到了,你只需要在你的 eval 字符串中添加一个or 子句。

    np.where(df.eval("(0.5 * a <= b <= 1.5 * a) or (a <= 50)"), df.a, df.b)
    #                                           ~~~~~~~~~~~~
    array([100,  30,  90,  94])
    

    【讨论】:

      猜你喜欢
      • 2021-11-16
      • 1970-01-01
      • 2021-11-07
      • 1970-01-01
      • 2022-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-04
      相关资源
      最近更新 更多