pandas下的DataFrame、Series对象的apply方法

dataframe,series是pandas下的两种数据结构,

1.series下使用apply方法:自动遍历整个 Series,按照相对应的函数进行运算。

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会将series分解为一个个元素,传入函数中,进行计算,最后将所有的计算结果存储在一个新的 Series 中返回。

series.apply(pd.Series),能够将series对象转为Dataframe对象

se.apply(pd.Series)


2.Dataframe 下使用apply方法:自动遍历整个Dataframe,按照行或列进行运算

比如按照行计算:

def a(data):

    print(data)

    print(type(data))

    data = data+3

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

    return data

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

type(df1)


可以看出,apply方法将Dataframe先分解为一个一个series数据对象,然后传入函数中,进行运算,最后将所有运算后series对象存储在一个Dataframe对象中。

如果在Dataframe的apply方法中,自定义的函数中,返回的不是series,是列表的话,我们需要先将列表转化为series,最后返回的才是Dataframe或者得到series,再转化为Dataframe.

def a(data):

    list = []

    data = data+3

    list = [1,2]

    return list

# df1 = df.apply(a,axis=1).apply(pd.Series)  得到series,再转化为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


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容