如何在熊猫条件下进行减法

Nei*_*eil 3 python pandas

我在pandas中有以下数据帧

  code     amnt     pre_amnt     
  123      200      200
  124      234      0
  125      231      231
  126      236      0
  128      122      130
Run Code Online (Sandbox Code Playgroud)

我只想在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
Run Code Online (Sandbox Code Playgroud)

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

jez*_*ael 7

用途numpy.where:

m = df['pre_amnt'] > 0
df['diff'] = np.where(m, df['pre_amnt'] - df['amnt'], 0)
Run Code Online (Sandbox Code Playgroud)

另一个解决方案where:

df['diff'] = (df['pre_amnt'] - df['amnt']).where(m, 0)
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)