Python 按行最大值/最小值(以大熊猫为单位)
我想这样做:Python 按行最大值/最小值(以大熊猫为单位),python,pandas,Python,Pandas,我想这样做: df['A'] = max(0, min(df.B, df.C - df.D)) 但是,我得到了一个ValueError(“序列的真值是不明确的”),我猜这意味着max和min函数在引擎盖下执行一些布尔运算,这不会分布在序列上。我知道您可以通过以下方式获得某些列集合的最小/最大值: df[['col1','col2','col3']].max(axis = 1) 因此,我应该能够通过使用中间值创建一些临时列来获得所需的输出,但我希望有一个干净的解决方案可以直接实现这一点。如何做
df['A'] = max(0, min(df.B, df.C - df.D))
但是,我得到了一个ValueError
(“序列的真值是不明确的”),我猜这意味着max
和min
函数在引擎盖下执行一些布尔运算,这不会分布在序列上。我知道您可以通过以下方式获得某些列集合的最小/最大值:
df[['col1','col2','col3']].max(axis = 1)
因此,我应该能够通过使用中间值创建一些临时列来获得所需的输出,但我希望有一个干净的解决方案可以直接实现这一点。如何做到这一点而不必为一次性中间值创建额外的列?
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']))
谢谢,这正是我想要的。