数据蛙就业班

pandas下的DataFrame、Series对象的apply

2020-02-16  本文已影响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

上一篇下一篇

猜你喜欢

热点阅读