美文网首页数据蛙就业班
pandas下的DataFrame、Series对象的apply

pandas下的DataFrame、Series对象的apply

作者: 卅清 | 来源:发表于2020-02-16 16:27 被阅读0次

    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

    相关文章

      网友评论

        本文标题:pandas下的DataFrame、Series对象的apply

        本文链接:https://www.haomeiwen.com/subject/yuopfhtx.html