pandas進(jìn)階教程之Dataframe的apply方法
apply方法介紹
方法形式為 apply(func, axis=0, raw=False, result_type=None, agrs=(), **kwargs),沿Dataframe的軸應(yīng)用func函數(shù)。
傳遞給函數(shù)的對(duì)象是Series對(duì)象,當(dāng)axis=0時(shí),其索引是Dataframe的索引;當(dāng)axis=1時(shí),其索引是Dataframe的列。
默認(rèn)情況下,result_type=None,最終返回的類型是從func函數(shù)的返回推斷出來的,否則它就取決于result_type參數(shù)。
參數(shù)解析:
- func:函數(shù),要應(yīng)用于每一列或每一行的函數(shù)。
- axis:默認(rèn)為0,0對(duì)應(yīng)行索引,將func函數(shù)應(yīng)用于每一列;1對(duì)應(yīng)列,將函數(shù)應(yīng)用于每一行。
- raw:布爾值,默認(rèn)為False,確定行或列是否作為Series或ndarray對(duì)象傳遞。
- False:將每一行或每一列作為一個(gè)Series對(duì)象傳遞給函數(shù);
- True:函數(shù)將接收ndarray對(duì)象。
- result_type:可選值有expand,reduce,broadcast,None,默認(rèn)為None。
- 默認(rèn)為None時(shí),返回結(jié)果取決于func函數(shù)的返回值,類似列表的結(jié)果將返回這些結(jié)果組成的Series,如果返回Series,則會(huì)將Series擴(kuò)展為列。
- expand:在axis=1時(shí)其作用,類似列表的結(jié)果將變成列。
- reduce:在axis=1時(shí)其作用,如果可以,返回一個(gè)Series,而不是擴(kuò)展類似列表的結(jié)果。
- broadcast:在axis=1時(shí)其作用,結(jié)果將被廣播到Dataframe的原始形狀,原始行索引和列將會(huì)被保留。
- args:元組,除了數(shù)組和Series之外,要傳遞給func的位置參數(shù)。
- **kwargs:傳遞給func的附加關(guān)鍵字參數(shù)。
返回:
- func函數(shù)沿Dataframe的給定軸應(yīng)用的結(jié)果。
用例1
導(dǎo)入包
import pandas as pd import numpy as np
df = pd.DataFrame([[4, 9]]*3, columns=['A', 'B']) df
輸出:

使用numpy中的通用函數(shù)。
df.apply(np.sqrt) # 相當(dāng)于np.sqrt(df)
輸出:

用例2
在任一軸上應(yīng)用函數(shù), 返回由類似列表的結(jié)果組成的Series。
df.apply(np.sum, axis=0)
輸出:
A 12
B 27
dtype: int64
df.apply(np.sum, axis=1)
輸出:
0 13
1 13
2 13
dtype: int64
df.apply(lambda x :[1, 2], axis=1)
輸出:
0 [1, 2]
1 [1, 2]
2 [1, 2]
dtype: object
用例3
傳遞result_type=expand,會(huì)將類似列表的結(jié)果擴(kuò)展到Dataframe的列。
df.apply(lambda x : [1, 2], axis=1, result_type='expand')
輸出:

在func函數(shù)內(nèi)部返回一個(gè)Series,和傳遞result_type=expand相似,Series的索引將作為擴(kuò)展的列名。
df.apply(lambda x: pd.Series([1, 2], index=['foo', 'bar']), axis=1)
輸出:

傳遞result_type=broadcast,將會(huì)返回相同形狀的結(jié)果,無論是列表還是標(biāo)量,將沿軸進(jìn)行廣播,列的名稱還是原始名稱。
df.apply(lambda x: [1, 2], axis=1, result_type='broadcast')
輸出:

總結(jié)
到此這篇關(guān)于pandas進(jìn)階教程之Dataframe的apply方法的文章就介紹到這了,更多相關(guān)pandas Dataframe的apply方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)自動(dòng)上京東搶手機(jī)
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)自動(dòng)上京東搶手機(jī)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02
跟老齊學(xué)Python之一個(gè)免費(fèi)的實(shí)驗(yàn)室
學(xué)習(xí)Python也要做實(shí)驗(yàn),也就是嘗試性地看看某個(gè)命令到底什么含義。在《集成開發(fā)環(huán)境(IDE)》一章中,我們介紹了Python的IDE時(shí),給大家推薦了IDLE,進(jìn)入到IDLE中,看到>>>符號(hào),可以在后面輸入一行指令。其實(shí),這就是一個(gè)非常好的實(shí)驗(yàn)室。2014-09-09
Python中多線程thread與threading的實(shí)現(xiàn)方法
這篇文章主要介紹了Python中多線程thread與threading的實(shí)現(xiàn)方法,很重要的應(yīng)用,需要的朋友可以參考下2014-08-08
python 如何做一個(gè)識(shí)別率百分百的OCR
最近在做游戲自動(dòng)化(測(cè)試),也就是游戲腳本了。主要有以下幾個(gè)需求識(shí)別率百分百、速度要快、模型要小,本文就來著手實(shí)現(xiàn)它2021-05-05
python requests 庫請(qǐng)求帶有文件參數(shù)的接口實(shí)例
今天小編就為大家分享一篇python requests 庫請(qǐng)求帶有文件參數(shù)的接口實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-01-01
Python使用PyNmap進(jìn)行網(wǎng)絡(luò)掃描的詳細(xì)步驟
使用 PyNmap 進(jìn)行網(wǎng)絡(luò)掃描是一個(gè)非常有效的方式,PyNmap 是 Nmap 工具的一個(gè) Python 封裝,它允許你在 Python 腳本中使用 Nmap 的強(qiáng)大功能,本文介紹了如何使用 PyNmap 進(jìn)行網(wǎng)絡(luò)掃描的詳細(xì)步驟,需要的朋友可以參考下2024-08-08
PYTHON基礎(chǔ)-時(shí)間日期處理小結(jié)
PYTHON時(shí)間日期處理函數(shù)以datetime為中心, 起點(diǎn)或中轉(zhuǎn), 轉(zhuǎn)化為目標(biāo)對(duì)象, 涵蓋了大多數(shù)業(yè)務(wù)場(chǎng)景中需要的日期轉(zhuǎn)換處理,這里就為大家介紹一下,需要的朋友可以參考下2018-05-05

