pandas篇之apply函数

什么是apply函数

apply函数是一个非常好用的lmada函数,我们可以将函数或者参数直接传到apply函数参数表上,可以实现批量的复杂的复杂的操作。apply函数是以列为单位获取数据的,但处理的时候又是以行为单位操作数据,即获取指定的列的数据后,再进行行之间的数据的操作,这一点也比较符合我们的逻辑。

案例

操作全列的数据

这里用列的最大数据减去最小的数据,获取中间的差值

df = data.apply(lambda x: x.max() - x.min())
print(df)

进行比较

##针对某一列
df = data['A'].apply(lambda x: 10 if x<0  else 0)
data['A'] = data['A']+df
print(data)

函数的传递

##处理A列
def  udpateState(num,goal):
     if num>9:
        num=num-goal
        return num 
     return num

dt1 = data.A.apply(udpateState,args=(9,))
print(dt1)
#处理指定的位置
dt2 = data.apply(lambda x : np.square(x) if x.name == 'A' else x, axis=1)
print(dt2)

##两列相减
def  udpateState2(datalist,start,end):
    return datalist[start]-datalist[end]
dt3 = data.apply(udpateState2,axis=1,args=('A','B'))
print(dt3)

代码汇总

import pandas as pd
import numpy as np
#日期数据
date = pd.date_range('20230303',periods=6)
data = pd.DataFrame(np.random.randn(6,4),index=date,columns=list('ABCD'))
##按照列名
df = data.apply(lambda x: x.max() - x.min())
print(df)
##针对某一列
df = data['A'].apply(lambda x: 10 if x<0  else 0)
data['A'] = data['A']+df
print(data)
##处理A列
def  udpateState(num,goal):
     if num>9:
        num=num-goal
        return num 
     return num

dt1 = data.A.apply(udpateState,args=(9,))
print(dt1)
#处理指定的位置
dt2 = data.apply(lambda x : np.square(x) if x.name == 'A' else x, axis=1)
print(dt2)

##两列相减
def  udpateState2(datalist,start,end,end2):
    return datalist[start]-datalist[end]
dt3 = data.apply(udpateState2,axis=1,args=('A','B','c'))
print(dt3)
pandas篇之apply函数_第1张图片

你可能感兴趣的:(Python,pandas,数据分析,python)