计算的 pandas 列和 0 的最大值

Maximum of calculated pandas column and 0

我有一个非常简单的问题(我猜)但没有找到正确的语法来解决它:

以下数据框:

   A   B  C
0  7  12  2
1  5   4  4
2  4   8  2
3  9   2  3

我需要为每一行创建一个新的 D 列,最大为 (0 ; A-B+C)

我尝试了 np.maximum(df.A-df.B+df.C,0) 但它不匹配并给我计算列的最大值对于每一行(示例中为 10)。

最后,我想获得下面的DF :

  A   B  C   D
0  7  12  2   0
1  5   4  4   5
2  4   8  2   0
3  9   2  3  10 

感谢任何帮助 谢谢

您可以使用 np.where:

s = df["A"]-df["B"]+df["C"]
df["D"] = np.where(s>0, s, 0) #or s.where(s>0, 0)

print (df)

   A   B  C   D
0  7  12  2   0
1  5   4  4   5
2  4   8  2   0
3  9   2  3  10

要在一行中执行此操作,您可以使用 apply 将最大值函数分别应用于每一行。

In [19]: df['D'] = df.apply(lambda s: max(s['A'] - s['B'] + s['C'], 0), axis=1)                                                                                                                            

In [20]: df                                                                                                                                                                                                
Out[20]: 
   A  B  C   D
0  0  0  0   0
1  5  4  4   5
2  0  0  0   0
3  9  2  3  10

让我们试试

df['D'] = df.eval('A-B+C').clip(lower=0)
Out[256]: 
0     0
1     5
2     0
3    10
dtype: int64