在嘗試撰寫在 Series/Dataframes 上使用 pipe/lambda 的代碼時,我仍然遇到錯誤,所以我想知道是否有辦法除錯我的代碼以獲得更好的理解。只是一個簡單的例子:我有一個系列:
s = pd.Series([10,20,30,40,50])
如果我想為每個元素添加一些數字,我可以使用:
s.apply(lambda x : x 5)
#or
s.pipe(lambda x : x 5)
兩者都作業正常。但是如果我想使用條件 lambda:
s.apply(lambda x : x 5 if x>20 else 0) # works
s.pipe(lambda x : x 5 if x>20 else 0) # doesn't work
我得到 ValueError,一個系列的真相是模棱兩可的。如果我不知道為什么我會在這里收到錯誤,我需要知道是什么x......這只是一個例子,它不是關于如何完成條件添加。我只想知道那里發生了什么,因此我需要知道x在執行我的代碼時發生了什么。
這是我的問題。在處理更復雜的問題并遇到錯誤時,有沒有辦法可以除錯我的代碼以x在執行代碼時隨時了解 lambda 中的型別或值?例如列印陳述句?這將有助于理解為什么我有時會失敗。
uj5u.com熱心網友回復:
這個案例:
不同之處在于xinapply是 Series 的單個元素,因為 lambda 函式一個接一個地應用于所有元素。從檔案:
Parameters:
func, function: Function to apply to each column or row.
在 的情況下pipe,x是系列本身,這就是為什么條件 lambda 不起作用(if x>20沒有意義)。從pipe 檔案中可以看出這一點:
Parameters:
func, function: Function to apply to the Series/DataFrame.
一般除錯:
定義一個函式而不是使用 lambda 運算式,然后您可以根據需要添加列印陳述句:
def my_func(x):
print(x)
return x 5 if x>20 else 0
s.pipe(my_func)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/443748.html
