map、apply、applymap的用法

准备工作

准备dataframe名为df

如图

image-20210816121002246

一、对Series操作

1.1 map

原理:map将数据逐个当作参数传入字典或者函数中,返回映射之后的值;最后映射结果组成新的Series

使用lambda函数:

# 1. 令所有人年龄加上88
df['age'].map(lambda x: x+88)

# 2. 性别栏,把f换成女,m换成男
df['gender'].map({'f':'女','m':'男'})

使用自定义函数,这里map只接受一个参数,即传入的x

例如:

# 3. 函数实现2中的功能
def gender_map(x):
    if x == 'f':
        return '女'
    elif x == 'm':
        return '男'
df['gender'].map(gender_map)

1.2 apply

相较于map,apply工作原理类似,区别是能够传入更加复杂的参数,接受多个参数

令所有人的年龄加上一个变量bias

# 年龄加上bias,bias作为参数传入
def age_apply(x, bias):
    return x+bias
df['age'].apply(age_apply, args=(-3,))

这里,用args以元组格式传入参数

再例如,对年龄乘以第一个参数,加上第二个参数(共两个参数):

def age_apply(x, multiple, bias):
    return x*multiple+bias
df['age'].apply(age_apply, args=(20, -3))  # 这里第一个参数20对应multiple,第二个参数-3对应bias

二、对DataFrame操作

2.1 apply

对于DataFrame而言,apply中的参数axis=1表示对【行】遍历,axis=0表示对【列】遍历

对于传入apply的行(或列)数据,以Series格式传入指定函数,返回对应的结果

例如,对行操作,性别为m,年龄大于20的,将性别的’f’改为’男’:

def gender_apply(x):
    if (x['gender'] == 'm') & (x['age'] > 20):
        return '男'
    else:
        return x['gender']
    pass
df.apply(gender_apply, axis=1)

2.2 applymap

对DataFrame中的每个单元格执行指定函数的操作

例如,想对下面的DataFrame所有数值执行保留两位小数的操作

# 构建dataframe
df = pd.DataFrame(data=np.random.randn(5,5),
            columns=list('ABCDE'))
# 保留两位小数
df.applymap(lambda x: '%.2f' % x)

原始数据:

image-20210816145135748

保留两位小数:

image-20210816145148438

参考文章

  1. 知乎 - 易执:Pandas教程 | 数据处理三板斧——map、apply、applymap详解
pandas中的applymapapplymap都是用于对DataFrame或Series中的数据进行函数应用的方法,它们的具体使用方式和作用略有不同。 1. apply方法 apply方法是用于对DataFrame或Series的行或列执行函数操作的方法。可以通过传递axis参数来指定是对行还是列进行操作,默认是对列进行操作。apply方法接受一个函数作为参数,并将该函数应用到DataFrame或Series的每一个元素上,然后将结果组合成一个新的DataFrame或Series。 示例: ``` import pandas as pd data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]} df = pd.DataFrame(data) def add_one(x): return x + 1 # 对每一列执行add_one函数 df.apply(add_one) # 对每一行执行add_one函数 df.apply(add_one, axis=1) ``` 2. map方法 map方法是用于对Series中的每一个元素执行函数操作的方法。它接受一个函数作为参数,并将该函数应用到Series的每一个元素上,然后将结果组合成一个新的Series。 示例: ``` import pandas as pd data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]} df = pd.DataFrame(data) def add_one(x): return x + 1 # 对Series A 中的每一个元素执行add_one函数 df['A'].map(add_one) ``` 3. applymap方法 applymap方法是用于对DataFrame中的每一个元素执行函数操作的方法。它接受一个函数作为参数,并将该函数应用到DataFrame的每一个元素上,然后将结果组合成一个新的DataFrame。 示例: ``` import pandas as pd data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]} df = pd.DataFrame(data) def add_one(x): return x + 1 # 对DataFrame中的每一个元素执行add_one函数 df.applymap(add_one) ``` 总结: apply方法适用于对DataFrame或Series的行或列执行函数操作;map方法适用于对Series中的每一个元素执行函数操作;applymap方法适用于对DataFrame中的每一个元素执行函数操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值