df_clean.apply(pd.to_numeric, errors='ignore')


在復習之前學習的pandas代碼時發現這句話 df_clean.apply(pd.to_numeric, errors='ignore') 感到十分疑惑,apply()是什么函數,pd.to_numeric又是啥,errors=""有啥作用。

接下來一一解答:

一、map(), apply()和applymap()

  1.map():

    map() 是一個Series的函數,DataFrame結構中沒有map()。map()將一個自定義函數應用於Series結構中的每個元素(elements)。

    下面舉一個例子 將w列都加1

    test1=pd.DataFrame(np.arange(12).reshape(3, 4), index=list("abc"), columns=list("WXYZ"))#先構造一個隨機的測試數據
    print(test1)
    test1["W"]=test1["W"].map(lambda x:x+1)#將w列的數都加1
    # #lambda在這里其實是在定義一個簡單的函數,一個沒有函數名的函數
    print(test1)

   

 

  2.apply():

    apply()將一個函數作用於DataFrame中的每個行或者列

    下面我們將w,x列相加

    按列相加

    test1['total'] = test1[['W', 'X']].apply(lambda x: x.sum(), axis=1)#按列相加
    print(test1)

 

 

     按行相加

    test1.loc['total'] = test1[['W', 'X']].apply(lambda x: x.sum(), axis=0)#按行相加
    print(test1)

 

 

   3.applymap():

    將函數做用於DataFrame中的所有元素(elements)

    將所有元素都加5 

def addFive(X):
    return X+5
    test1=test1.applymap(addFive)
    print(test1)

 

二、pd.to_numeric

   將參數轉換為數字類型。

  errors中參數的解釋:

    'raise'參數:無效的解析將引發異常

    'corece'參數:將無效解析設置為NaN

    'ignore'參數:無效的解析將返回輸入

  先構造數據

    s = pd.Series(['test', '1.0', '2', '2021-12-5', 1, False, None, pd.Timestamp('2021-12-05')])
    print(s)

   執行raise會報錯,因為該數據里面有非數字

 pd.to_numeric(s,errors="raise")

  執行ignore只對數字字符串轉型,其他不轉換

pd.to_numeric(s,errors="ignore")

  執行coerce會將時間,bool,數字字符串轉換為數字,其他為NaN

pd.to_numeric(s,errors="coerce")

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM