pandas下的DataFrame、Series對(duì)象的apply方法

dataframe,series是pandas下的兩種數(shù)據(jù)結(jié)構(gòu),

1.series下使用apply方法:自動(dòng)遍歷整個(gè)?Series,按照相對(duì)應(yīng)的函數(shù)進(jìn)行運(yùn)算。

import pandas as pd

df = pd.DataFrame({"a":[i for i in range(5)],"b":[i+1 for i in range(4,9)]})

df.head()


print(type(df.a))

def test(data):

? ? print(data)

? ? print(type(data))

? ? data = data +1

? ? print('________')

? ? return data

se = df.a.apply(test)

se


可以看出,series使用apply方法后,apply會(huì)將series分解為一個(gè)個(gè)元素,傳入函數(shù)中,進(jìn)行計(jì)算,最后將所有的計(jì)算結(jié)果存儲(chǔ)在一個(gè)新的?Series?中返回。

series.apply(pd.Series),能夠?qū)eries對(duì)象轉(zhuǎn)為Dataframe對(duì)象

se.apply(pd.Series)


2.Dataframe?下使用apply方法:自動(dòng)遍歷整個(gè)Dataframe,按照行或列進(jìn)行運(yùn)算

比如按照行計(jì)算:

def a(data):

? ? print(data)

? ? print(type(data))

? ? data = data+3

? ? print("--------")

? ? return data

df1 = df.apply(a,axis=1)

type(df1)


可以看出,apply方法將Dataframe先分解為一個(gè)一個(gè)series數(shù)據(jù)對(duì)象,然后傳入函數(shù)中,進(jìn)行運(yùn)算,最后將所有運(yùn)算后series對(duì)象存儲(chǔ)在一個(gè)Dataframe對(duì)象中。

如果在Dataframe的apply方法中,自定義的函數(shù)中,返回的不是series,是列表的話,我們需要先將列表轉(zhuǎn)化為series,最后返回的才是Dataframe或者得到series,再轉(zhuǎn)化為Dataframe.

def a(data):

? ? list = []

? ? data = data+3

? ? list = [1,2]

? ? return list

# df1 = df.apply(a,axis=1).apply(pd.Series)? 得到series,再轉(zhuǎn)化為Dataframe,這種不能自定義index,后面的可以。

# df1 = df.apply(a,axis=1)? 需要將return list 改為 return??pd.Series(list),

df1 = df.apply(lambda x:pd.Series(a(x)),axis=1)?

df1


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

友情鏈接更多精彩內(nèi)容