我有两个带有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()。
我不明白这个错误
答案 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。