如何比较按行排列的两个' pd.系列没有for循环



我在比较两个熊猫系列时遇到了一个问题。我将一些级数传递给一个函数,该函数应该根据条件计算东西,如下所示:

di = {'A': [1, 2, 7, 2], 'B': [3, 5, 6, 4], 'C': [9, 8, 7, 4]}
df = pd.DataFrame(di)
def function(s1, s2, s3):
if s1 > s2:
s4 = s2 + s3
else:
s4 = s1 + s3
return s4
df['D'] = function(df['A'], df['B'], df['C'])

但是我得到了一个ValueError: The truth value of a Series is ambiguous。我猜这是因为我应该按行比较级数的元素,2乘2,以及运算符>这样不行

我怎么能让函数工作,而不诉诸于系列的元素上的for循环?

因为处理数组使用numpy.where和adds3-输出为Series:

def function(s1, s2, s3):
return s3 + np.where(s1 > s2, s2, s1)

对于输出1d数组,可以使用:

def function(s1, s2, s3):
return np.where(s1 > s2, s2 + s3, s1 + s3)

最新更新