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,最終返回的類(lèi)型是從func函數(shù)的返回推斷出來(lái)的,否則它就取決于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ù)的返回值,類(lèi)似列表的結(jié)果將返回這些結(jié)果組成的Series,如果返回Series,則會(huì)將Series擴(kuò)展為列。
- expand:在axis=1時(shí)其作用,類(lèi)似列表的結(jié)果將變成列。
- reduce:在axis=1時(shí)其作用,如果可以,返回一個(gè)Series,而不是擴(kuò)展類(lèi)似列表的結(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ù), 返回由類(lèi)似列表的結(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ì)將類(lèi)似列表的結(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é)果,無(wú)論是列表還是標(biāo)量,將沿軸進(jìn)行廣播,列的名稱(chēng)還是原始名稱(chēng)。
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í)間和日期庫(kù)的實(shí)現(xiàn)
這篇文章主要介紹了Python時(shí)間和日期庫(kù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03python程序運(yùn)行添加命令行參數(shù)argparse模塊具體用法詳解
這篇文章主要給大家介紹了關(guān)于python程序運(yùn)行添加命令行參數(shù)argparse模塊具體用法的相關(guān)資料,argparse是Python內(nèi)置的一個(gè)用于命令項(xiàng)選項(xiàng)與參數(shù)解析的模塊,通過(guò)在程序中定義好我們需要的參數(shù),需要的朋友可以參考下2024-01-01Python使用keys() 獲取 Redis 數(shù)據(jù)庫(kù)中的所有鍵
哈希、列表、集合、排序集合、字符串、JSON 和流是 Redis 支持的眾多數(shù)據(jù)結(jié)構(gòu)之一,本文將討論獲取 Redis 數(shù)據(jù)庫(kù)中的所有鍵,感興趣的朋友跟隨小編一起看看吧2023-08-08Python氣泡提示與標(biāo)簽的實(shí)現(xiàn)
這篇文章主要介紹了Python氣泡提示與標(biāo)簽的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04Python實(shí)現(xiàn)的異步代理爬蟲(chóng)及代理池
本文主要介紹了Python實(shí)現(xiàn)異步代理爬蟲(chóng)及代理池的相關(guān)知識(shí),具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-03-03pytorch 獲取層權(quán)重,對(duì)特定層注入hook, 提取中間層輸出的方法
今天小編就為大家分享一篇pytorch 獲取層權(quán)重,對(duì)特定層注入hook, 提取中間層輸出的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08python怎樣更加簡(jiǎn)潔的解決小明種蘋(píng)果
這篇文章主要介紹了python怎樣更加簡(jiǎn)潔的解決小明種蘋(píng)果。想了解數(shù)據(jù)結(jié)構(gòu)和算法的同學(xué),可以參考下2021-04-04一文帶你解密Python可迭代對(duì)象的排序問(wèn)題
這篇文章主要為大家詳細(xì)介紹一下Python中可迭代對(duì)象的排序問(wèn)題,文中的示例代碼講解詳細(xì),對(duì)我們深入了解Python有一定幫助,感興趣的可以了解一下2022-07-07