2014-11-05 98 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功能期待,我得到的結果,我期待

相關問題