python - np.where 和 if 在 Pandas 中的组合

标签 python pandas numpy dataframe

我在 Pandas 中有以下数据框

   prod     S       X
   a        10      123             
   b        20      150
   b        30      140
   a        40      100

   Formula for product a and b is as follows
   a = IF(S>X, (0.6/100(S-X)),0)
   b = IF(S>X, (0.2/100(S-X)),0)

如何根据现有数据框中产品 a 和 b 的公式计算新列

最佳答案

您可以使用 np.where 然后使用 np.select。来自@AnnaIliukovich-Strakovskaia 的数据。

a = np.where(df['S'] > df['X'], 0.6/100*(df['S'] - df['X']), 0)
b = np.where(df['S'] > df['X'], 0.2/100*(df['S'] - df['X']), 0)

df['result'] = np.select([df['prod'].eq('a'), df['prod'].eq('b')], [a, b], np.nan)

print(df)

  prod    S    X  result
0    a   10  123    0.00
1    b   20  150    0.00
2    b   30  140    0.00
3    a  140  100    0.24

关于python - np.where 和 if 在 Pandas 中的组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52466532/

相关文章:

python - 启动 celery worker 时出现 ValueError : not enough values to unpack (expected 3, 为 0)

python - 转换为 csv 时仅从 xls 第一行删除\n 个字符 Python pandas

python - 如何在 pandas 中按日期比较列中的值?

Python zip 方法和舍入行为

python - Numpy reshape "reversal"

python - 通过将非采样值归零来对 numpy 数组进行采样?

Python- Mechanize : Why does it need CookieJar?

python - 以(逆时针)顺序排列凹面多边形顶点?

python - 这些 transient 模型的 ID 发生了什么?

python pandas 无法使用重复的键进行组装