Pandas中apply,applymap以及python自带map的用法与区别

本文介绍了Pandas中的apply、map和applymap函数。apply函数可应用于DataFrame的行或列,介绍了其各参数含义及使用示例;map函数会根据提供的函数对指定序列做映射,说明了不同Python版本返回值情况;applymap函数给出了语法格式及返回值为DataFrame。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.apply()

Pandas中apply函数的格式为:

apply(func, axis=0,raw=False, result_type=None, args=(), **kwds)

其中,func可以是匿名函数,应用在DataFrame的行或列上。

axis:0或'index':函数应用在DataFrame每列上;

          1或'columns':函数应用在DataFrame每行上。

raw:布尔值,默认False。

       False or None:将每一行或一列作为系列传入函数;

       True:传入的函数将接收nparray对象。

result_type:{‘expand’, ‘reduce’, ‘broadcast’, None},默认为 None

仅作用在axis=1上(列)

'expand':列表结果将变为列,返回的为Dataframe;

'reduce':返回一个系列,Series;

'broadcast':返回DataFrame数据,将保留原来的索引和列。

args:除了数组、系列之外,参数将传递给func。

import pandas as pd
import numpy as np

np.random.seed(123)
df = pd.DataFrame(np.random.randint(1,20,size=(5,4)),
                  index=['A','B','C','D','E'],
                  columns=['a','b','c','d'])

首先,用numpy生成一个(5,4)的随机整数DataFrame,范围是在(1,20)。其中设置了随机数种子,这样所产生的的随机数是一样的。

df.apply(np.sqrt)

将会作用于DataFrame数据框的每一个数,其结果如下:

df.apply(np.sum,axis=0)
df.apply(np.sum,axis=1)

               

其中,axis=0按列进行求和;axis=2按行进行求和。

df.apply(lambda x:[1,2,3,4],axis=1,result_type='reduce')
df.apply(lambda x:[1,2,3,4],axis=1,result_type='expand')
df.apply(lambda x:[1,2,3,4],axis=1,result_type='broadcast')

其结果依次为:

       

图1的结果就是Series,图2,3的结果都是Dataframe,唯一不同的就是图3保留的原来的索引和列。

2.map()

map() 会根据提供的函数对指定序列做映射。第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。

iterable可以是一个或多个序列。其返回值为一个map对象。

map(function, iterable, ...)
def f(x):
    return x**2

list(map(f,[1,3,5,7,8]))

map()函数在python3中的返回值是iterators,可用list()函数转换;在python2中为返回值为list。

3.applymap()

函数语法格式为:

applymap(func)

该函数的返回值为一个DataFrame。

df1 = pd.DataFrame([[1, 2.12], [3.356, 4.567]])

a = df1.applymap(lambda x:len(str(x)))

     

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值