在pandas中乘以数据帧列时出错

时间:2018-01-26 16:32:03

标签: python pandas

我有两个带有s_df和r_df的数据帧。在s_df中有一列l1,在r_df中有一列l2,它们有正负实数。如果这些列的成对产品是正面的,我正在尝试做某事。像

if ((s_df['l1']*r_df['l2']) > 0):
    print " do something"

但是我收到了错误

  

ValueError:系列的真值是不明确的。使用a.empty,   a.bool(),a.item(),a.any()或a.all()。

我不明白这个错误

3 个答案:

答案 0 :(得分:0)

当您将2列相乘时,结果也将是包含多个元素的列。每个元素可以是正面的或负面的。在这种情况下,if被称为新系列,而不是每个元素,因此不可能产生不明确的结果。

尝试(可能不是最pythonic方式):

for index, row in s_df.iterrows():
    for index1, row1 in r_df.iterrows():
        if (s_df['l1']*r_df['l2']) > 0:
            print "something"

答案 1 :(得分:0)

通过添加sum()方法,您可以使用2个向量的乘积之和:

if(s_df['l1'] * s_df['l2']).sum() > 0:
    print("something")

答案 2 :(得分:0)

错误表明表达式未完全定义。以下是建议的一些选项:

DF中的所有项目都是>比0: if((s_df ['l1'] * r_df ['l2'])。all()> 0):

DF中的任何项目都是>比0: if((s_df ['l1'] * r_df ['l2'])。any()> 0):

如果您希望它遍历每一行,您可能需要使用itertools。