首页 > 解决方案 > 如何在熊猫条件下做减法

问题描述

我在熊猫中有以下数据框

  code     amnt     pre_amnt     
  123      200      200
  124      234      0
  125      231      231
  126      236      0
  128      122      130

我只想在pre_amnt非零时做减法。我想要的数据框是

  code     amnt     pre_amnt    diff    
  123      200      200         0
  124      234      0           0
  125      231      231         0
  126      236      0           0
  128      122      130         8

所以,如果pre_amnt为零,那么diff也应该是 0。我怎样才能在熊猫中做到这一点?

标签: pythonpandas

解决方案


使用numpy.where

m = df['pre_amnt'] > 0
df['diff'] = np.where(m, df['pre_amnt'] - df['amnt'], 0)

另一个解决方案where

df['diff'] = (df['pre_amnt'] - df['amnt']).where(m, 0)

print (df)
   code  amnt  pre_amnt  diff
0   123   200       200     0
1   124   234         0     0
2   125   231       231     0
3   126   236         0     0
4   128   122       130     8

推荐阅读