我想做这样的事情:
df['A'] = max(0, min(df.B, df.C - df.D))
但是,我得到一个ValueError
(“系列的真值是模棱两可的”),我想这意味着max
和min
函数在以下情况下正在执行一些布尔运算引擎盖,并且不会散布在Series上。我了解您可以通过以下方式获取某组列的最小值/最大值。
df[['col1','col2','col3']].max(axis = 1)
,因此我应该能够通过制作一些带有中间值的临时列来获得所需的输出,但是我想要一个直接执行此操作的干净解决方案。如何做到这一点而不必为多余的中间值添加额外的列?
答案 0 :(得分:2)
max
和min
是内置的Python函数。它们不是为Pandas / NumPy随附的矢量化功能而设计的。
相反,您可以使用np.maximum
/ np.minimum
进行逐元素计算:
import numpy as np
df['A'] = np.maximum(0, np.minimum(df['B'], df['C'] - df['D']))