最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Pandas groupby apply agg 的區(qū)別 運(yùn)行自定義函數(shù)說(shuō)明

 更新時(shí)間:2021年03月26日 09:34:03   作者:青盞  
這篇文章主要介紹了Pandas groupby apply agg 的區(qū)別 運(yùn)行自定義函數(shù)說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

agg 方法將一個(gè)函數(shù)使用在一個(gè)數(shù)列上,然后返回一個(gè)標(biāo)量的值。也就是說(shuō)agg每次傳入的是一列數(shù)據(jù),對(duì)其聚合后返回標(biāo)量。

對(duì)一列使用三個(gè)函數(shù):

對(duì)不同列使用不同函數(shù)

apply 是一個(gè)更一般化的方法:將一個(gè)數(shù)據(jù)分拆-應(yīng)用-匯總。而apply會(huì)將當(dāng)前分組后的數(shù)據(jù)一起傳入,可以返回多維數(shù)據(jù)。

實(shí)例:

1、數(shù)據(jù)如下:

lawsuit2[['EID','LAWAMOUNT','LAWDATE']]

2、groupby后應(yīng)用apply傳入函數(shù)數(shù)據(jù)如下:

lawsuit2[['EID','LAWAMOUNT','LAWDATE']].groupby(['EID']).apply(lambda df:print(df))

3、如果使用agg,對(duì)于兩列可以處理,但對(duì)于上面的三列,打印數(shù)據(jù)如下:

lawsuit2[['EID','LAWAMOUNT','LAWDATE']].groupby(['EID']).agg(lambda df:print(df))

可以看到agg傳入的只有一列數(shù)據(jù),如果我們使用df加列下表強(qiáng)行取值也能取到,但是有時(shí)會(huì)出現(xiàn)各種keyError問(wèn)題。

4、完整代碼:

判斷最近一次日期的花費(fèi)是否是所有的花費(fèi)中最大花費(fèi)。

def handle(df):
#   print(df)
# 找最大日期
  maxdate = df['LAWDATE'].max()
# 找最大費(fèi)用
  left = df[ df['LAWDATE']==maxdate ]['LAWAMOUNT'].max()
# 取ID
  EID = df['EID'].values[0]
#   print(EID)
# 從已存在的表中根據(jù)EID找到最大費(fèi)用
  right = LAW_AMOUNT_MAX.loc[EID,'LAW_AMOUNT_MAX']
# 判斷費(fèi)用是否相等
  if left==right:
    return 1
  else:
    return 0
    
LAW_AMOUNT_MAX_IS_LAST = lawsuit2[['EID','LAWAMOUNT','LAWDATE']].groupby(['EID']).apply(handle)

其他注意點(diǎn):

在groupby后使用apply,如果直接返回,會(huì)出現(xiàn)有多余的groupby索引問(wèn)題,可以使用group_keys解決:

orgin = reviews_df.sort_values(["reviewerID","unixReviewTime"]).groupby("reviewerID",group_keys=False)
train = orgin.apply(lambda df: df[:-2])
train.head()

補(bǔ)充:pandas分組聚合運(yùn)算groupby之a(chǎn)gg,apply,transform

groupby函數(shù)是pandas中用以分組的函數(shù),可以通過(guò)指定列來(lái)進(jìn)行分組,并返回一個(gè)GroupBy對(duì)象。對(duì)于GroupBy對(duì)象的聚合運(yùn)算,其有經(jīng)過(guò)優(yōu)化的較為常用的sum,mean等函數(shù),但是如果我們需要用自定義的函數(shù)進(jìn)行聚合運(yùn)算,那么就需要通過(guò)agg,apply,transform來(lái)實(shí)現(xiàn)。

agg,apply和transform三者之間的區(qū)別在于:1、agg和transform之間的區(qū)別為:前者經(jīng)過(guò)聚合后,只會(huì)在該組單列中返回一個(gè)標(biāo)量值,而transform則會(huì)將該標(biāo)量值在該組單列內(nèi)進(jìn)行廣播,保持原DataFrame的索引不變;2、agg和transform中的函數(shù)參數(shù)是以分組后的單列(Series)為操作對(duì)象的,即傳入agg和transform的函數(shù)的參數(shù)是列,而apply中的函數(shù)參數(shù)是分組后整個(gè)的DataFrame。下面分別對(duì)這兩點(diǎn)進(jìn)行說(shuō)明。

一、agg和transform

如下代碼所示,構(gòu)造一個(gè)df,agg和transform中l(wèi)ambda函數(shù)的input都為單列,但是agg返回的索引是分組的key的唯一值,而transform返回的索引和原df一樣,但是相比于agg返回的結(jié)果,發(fā)現(xiàn)transform只是在d行處的值進(jìn)行了重復(fù)的廣播,這個(gè)目的就是維持原df的索引不變,且被拿來(lái)分組的列會(huì)被剔除。

df
Out[1]:
 index a b c
0   d 0 1 2
1   d 3 4 5
2   e 6 7 8
 
df.groupby(by='index').agg(lambda x:x.shape)
Out[2]: 
     a   b   c
index         
d   (2,) (2,) (2,)
e   (1,) (1,) (1,)
 
df.groupby(by='index').transform(lambda x:x.shape)
Out[3]: 
   a   b   c
0 (2,) (2,) (2,)
1 (2,) (2,) (2,)
2 (1,) (1,) (1,) 

二、agg和apply

下面的是apply的結(jié)果,相比于上面agg的結(jié)果,可以發(fā)現(xiàn),實(shí)際上lambda函數(shù)的input不再是一個(gè)Series,而是分組后的整個(gè)DataFrame。

dd.groupby(by='index').apply(lambda x:x.shape)
Out[4]: 
index
d  (2, 4)
e  (1, 4)

三、其他注意點(diǎn)

對(duì)于agg函數(shù),其不僅可以傳入一個(gè)函數(shù)對(duì)每列執(zhí)行相同的操作,還可以傳入一個(gè)字典{'col_name':func},來(lái)對(duì)不同的列做不同的操作,也可以將func替換為由多個(gè)不同的函數(shù)組成的list,實(shí)現(xiàn)對(duì)同一列做多個(gè)不同的操作,這是agg函數(shù)最為靈活的地方。

這三個(gè)函數(shù),參數(shù)形式都為(func, *args,**kwargs),所以可以通過(guò)位置參數(shù)和關(guān)鍵字參數(shù)給func傳遞額外的參數(shù)。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • 利用python模擬sql語(yǔ)句對(duì)員工表格進(jìn)行增刪改查

    利用python模擬sql語(yǔ)句對(duì)員工表格進(jìn)行增刪改查

    這篇文章主要給大家介紹了關(guān)于利用python模擬sql語(yǔ)句實(shí)現(xiàn)對(duì)員工表格進(jìn)行增刪改查的相關(guān)資料,文中介紹了詳細(xì)的需求以及示例代碼,對(duì)大家的理解和學(xué)習(xí)具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-07-07
  • Django Form and ModelForm的區(qū)別與使用

    Django Form and ModelForm的區(qū)別與使用

    這篇文章主要介紹了Django Form and ModelForm的區(qū)別與使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Python開(kāi)發(fā)加薪利器之Docker的使用實(shí)踐

    Python開(kāi)發(fā)加薪利器之Docker的使用實(shí)踐

    docker利用容器技術(shù),獨(dú)立運(yùn)行一個(gè)或者一組應(yīng)用,docker是基于go語(yǔ)言開(kāi)發(fā),docker鏡像好比是一個(gè)模版,可以通過(guò)這個(gè)模版來(lái)創(chuàng)建容器服務(wù),今天通過(guò)本文給大家分享Docker的使用實(shí)踐,感興趣的朋友跟隨小編一起看看吧
    2021-05-05
  • Python?copy()與deepcopy()方法之間有什么區(qū)別

    Python?copy()與deepcopy()方法之間有什么區(qū)別

    這篇文章主要介紹了Python中的copy()和deepcopy(),下面詳細(xì)介紹該內(nèi)容并附上詳細(xì)代碼,需要的朋友可以參考一下文章的具體內(nèi)容,希望對(duì)你有所幫助
    2022-10-10
  • Python繪制數(shù)據(jù)圖表的超詳細(xì)教程

    Python繪制數(shù)據(jù)圖表的超詳細(xì)教程

    畫(huà)一個(gè)吸引人注意的圖表相當(dāng)重要,當(dāng)你探索一個(gè)數(shù)據(jù)集,需要畫(huà)圖表,圖表看起來(lái)令人愉悅是件很高興的事,下面這篇文章主要給大家介紹了關(guān)于Python繪制數(shù)據(jù)圖表的超詳細(xì)教程,需要的朋友可以參考下
    2022-11-11
  • python版本五子棋的實(shí)現(xiàn)代碼

    python版本五子棋的實(shí)現(xiàn)代碼

    五子棋是常見(jiàn)的一款小游戲,五子棋問(wèn)題是人工智能中的一個(gè)經(jīng)典問(wèn)題。這篇文章主要介紹了python版本五子棋的實(shí)現(xiàn)代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • Python 條件判斷的縮寫(xiě)方法

    Python 條件判斷的縮寫(xiě)方法

    開(kāi)始以為Python中沒(méi)有像其他語(yǔ)言一樣的條件判斷的縮寫(xiě)形式:
    2008-09-09
  • python雙端隊(duì)列原理、實(shí)現(xiàn)與使用方法分析

    python雙端隊(duì)列原理、實(shí)現(xiàn)與使用方法分析

    這篇文章主要介紹了python雙端隊(duì)列原理、實(shí)現(xiàn)與使用方法,結(jié)合實(shí)例形式分析了Python雙端隊(duì)列的概念、原理、定義及使用方法,需要的朋友可以參考下
    2019-11-11
  • python中reduce()函數(shù)的使用方法示例

    python中reduce()函數(shù)的使用方法示例

    reduce() 函數(shù)會(huì)對(duì)參數(shù)序列中元素進(jìn)行累積,下面這篇文章主要給大家介紹了關(guān)于python中reduce()函數(shù)的使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-09-09
  • python 制作python包,封裝成可用模塊教程

    python 制作python包,封裝成可用模塊教程

    這篇文章主要介紹了python 制作python包,封裝成可用模塊教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-07-07

最新評(píng)論

昌都县| 长寿区| 普陀区| 乌什县| 浦江县| 玛多县| 赤峰市| 云安县| 水富县| 乌拉特后旗| 绩溪县| 那坡县| 德令哈市| 阿荣旗| 嘉善县| 林州市| 乐昌市| 株洲市| 神木县| 富川| 临夏县| 福州市| 嵊州市| 盘山县| 定兴县| 铜陵市| 宁明县| 册亨县| 井冈山市| 达日县| 新源县| 仁寿县| 江山市| 巴林左旗| 慈溪市| 西吉县| 汾阳市| 潞西市| 当涂县| 施甸县| 龙口市|