pandas apply 總結(待續(xù))

apply 是非常常用的一個函數(shù),在處理數(shù)據(jù)過程中非常有效。因此,在此做一個分享總結。
在處理過程中,最麻煩的其實是涉及 axis =0 或者1 的問題。

在說明之前非常有必要要說明axis 的定義問題

 df=pd.DataFrame({'a':[1,4],'b':[2,5],'c':[3,6]})
index a b c
1 1 2 3
2 4 5 6
  • 再提前要說明下apply 的運行機制,apply 后面會傳進去一個向量,然后函數(shù)作用在這個向量上進行計算,然后會傳出一個值或者向量或者其他,需要其他相應格式再承接出來。

  • 然后要再區(qū)分開一個不同就是apply 作用的向量是row還是columns,如果是row那么axis=1,如果是columns,那么axis=0,(切記),而且axis=0 ,永遠都是默認值。

  • 然后再看,如果是axis=0,那么作用的是,那么你會發(fā)現(xiàn)結果所有的進行計算(就是說那么多行會發(fā)生擠壓或者壓縮或者擴張之類的變化)。
    如下所示:

df.apply(np.sum)# 變成一個series 
index a
a 5
b 7
c 9

或者也可以變成一個dataframe,這都是不同的函數(shù)導致,這個無所謂

 df.apply(lambda x:x.head(1)) 
index a b c
1 1 2 3

如果axis=1呢?

df.apply(np.sum,axis=1)# 變成一個series 
index value
0 6
1 15

所以總結下,當axis=0, 傳進去函數(shù)的是列向量,但其實還是進行行運算,當axis=1, 傳進去函數(shù)的是行向量,但其實還是進行列運算。

如果你是一個比較深入用pandas 的用戶,你會發(fā)現(xiàn)
dropna axis=0 刪除空值所在行
axis =1 刪除空值所在列
drop axis=0 刪除所在行
axis =1 刪除所在列

其實在這里,也不矛盾,axis=0,默認的都是進行 行運算

Series

不涉及axis 的問題,非常簡單。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容