2014-11-05 66 views
1

我有一个向量,我想应用皮尔逊相关性的熊猫数据框的所有行。我尝试以下操作:使用适用于熊猫数据框给出ValueError

df.apply(apply_func, axis=1, args=(np.array([1,2,3])), raw=True) 

应用FUNC只是需要两个numpy阵列和计算相关

def apply_func(v1, v2): 
    #do stuff 

不过,我得到以下错误,当我尝试运行此

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all() 

我在apply_func设置了断点,我从来没有进入它。我确定我错误地使用了这个结构,但我不确定它是什么。我认为df的每一行将作为第一位置参数传递给apply_func,并且args中的任何一行都将占用余下的部分。这是不正确的?

编辑我在下面创建了一个简单的例子,在这个例子中,apply_func函数应该只添加两个向量。还是创造了同样的错误

data = {'k1': [1, 2, 3], 'k2': [4, 5, 6], 'k3': [7, 8, 9]} 
df = pd.DataFrame(data) 
def apply_func(v1, v2): 
    return v1 + v2 
df.apply(apply_func, axis=1, args=(np.array([1,2,3])), raw=True) 

回答

1

所以能够通过查找下面的帖子

python pandas: apply a function with arguments to a series. Update

我的特殊情况,解决我自己的问题产生了不同的错误(不知道为什么),但他们的解决方案工作。通过改变

args=(np.array([1,2,3])) 

args=(np.array([1,2,3]),) #<-- NOTE THE COMMA 

我保证参数表是一个元组是什么apply功能期待,我得到的结果,我期待

相关问题