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)

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
pandas中,apply函数用于对DataFrame的行或列应用一个函数。它可以接受一个lambda函数表达式或一个自定义函数作为参数,并返回一个新的Series或DataFrame对象。 在引用中的官方使用案例中,apply函数的用法有以下几种情况: 1. 使用通用函数:可以使用numpy的通用函数,如np.sqrt(df),对DataFrame中的每个元素进行操作。 2. 使用聚合功能:可以通过指定axis参数为0或1,对DataFrame的行或列进行聚合操作。例如,df.apply(np.sum, axis=0)将对每一列求和。 3. 在每行上返回列表或类似列表的内容:可以使用lambda函数返回一个列表或类似列表的内容,如df.apply(lambda x: [1, 2], axis=1)。 4. 扩展结果到数据的列:可以通过设置result_type参数为'expand',将类似列表的结果扩展到数据的列上,如df.apply(lambda x: [1, 2], axis=1, result_type='expand')。 5. 返回一个序列:可以在函数中返回一个序列,并设置序列的索引,生成的列名将是序列索引,如df.apply(lambda x: pd.Series([1, 2], index=['foo', 'bar']), axis=1)。 6. 广播结果:可以通过设置result_type参数为'broadcast',确保函数返回相同形状的结果,并沿轴进行广播。生成的列名将是原始列名,如df.apply(lambda x: [1, 2], axis=1, result_type='broadcast')。 除了官方使用案例外,引用中的其他案例也展示了apply函数的应用。例如,在一个DataFrame中对各列应用函数,可以使用axis参数设置为0,如df.apply(lambda x: np.sum(x));对各行应用函数,可以使用axis参数设置为1,如df.apply(lambda x: np.sum(x), axis=1)。 总而言之,pandas中的apply函数可以用于对DataFrame的行或列应用一个函数,可以通过指定不同的参数和设置来实现不同的操作和处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值