當通過lambda調用熊貓apply()
函數時,規則/過程是什麼?下面的例子。沒有lambda顯然,整個系列(df [列名])被傳遞給「測試」函數,該函數拋出一個錯誤,試圖對系列進行布爾運算。pandas適用()帶和不帶lambda
如果通過lambda調用相同的函數,它將起作用。迭代每行都傳遞爲「x」,df [列名]返回當前行中該列的單個值。
這就像lambda正在移除一個維度。任何人都有解釋或指向這個具體的文檔?謝謝。
實施例1用的λ,工程確定
print("probPredDF columns:", probPredDF.columns)
def test(x, y):
if x==y:
r = 'equal'
else:
r = 'not equal'
return r
probPredDF.apply(lambda x: test(x['yTest'], x[ 'yPred']), axis=1).head()
實施例1輸出
probPredDF columns: Index([0, 1, 'yPred', 'yTest'], dtype='object')
Out[215]:
0 equal
1 equal
2 equal
3 equal
4 equal
dtype: object
實施例2無拉姆達,對一系列誤差拋出布爾運算
print("probPredDF columns:", probPredDF.columns)
def test(x, y):
if x==y:
r = 'equal'
else:
r = 'not equal'
return r
probPredDF.apply(test(probPredDF['yTest'], probPredDF[ 'yPred']), axis=1).head()
實施例2輸出
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
請使用代碼格式化這個問題,很難否則解密。 – pshep123
@piRSquared我覺得我還太低調。上次我試着告訴我編輯隊列已滿。自那以後,我一直沒有離開過。 – pshep123