python - 基于多种条件的新列

标签 python pandas conditional-statements

     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 <= 50, then c = a)在这句话中。

最佳答案

差不多就完成了,您只需要在 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])

关于python - 基于多种条件的新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49554117/

相关文章:

shell - PowerShell 命令行上的链命令(如 POSIX sh &&)

Python/Numpy - 计算相等数组元素的总和

python - 选择具有 None 值的 pandas 单元格

python - np.where 数据框列 .isin 数据框列

c - c != '\n'条件在 "for"循环中的作用是什么(C语言)?

JavaScript 条件语句失败

python - 如何将 MultiIndex 转换并 reshape 为 3D Numpy 数组?

python - 配置文件中的语法错误 - 未定义 future 功能 unicode_literals (Python、Django、Sphinx)

python - 需要航类路线的算法建议

python - 如何使用python计算csv文件分组项目中特定项目的出现次数