python中pandas的map、apply、applymap的用法示例

Python学习评论阅读模式

python中pandas的map、apply、applymap的用法示例

准备工作

准备dataframe名为df

如图

python中pandas的map、apply、applymap的用法示例

 

一、对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)

 

原始数据:

python中pandas的map、apply、applymap的用法示例

 

保留两位小数:

 

python中pandas的map、apply、applymap的用法示例

继续阅读
weinxin
我的微信
运营不易,
感谢支持!
公式库网
  • 本文由 发表于 2023年3月30日 21:41:59
  • 转载请务必保留本文链接:https://www.gongshiku.com/html/202303/pythonzhongpandasdemapapplyapplymapdeyongfashili.html
Python学习

Python操作pymysql详细示例

Python操作pymysql详细示例 程序在运行时,数据都是在内存中的。当程序终止时,通常需要将数据保存在磁盘上。前面我们有学过将数据写入文件就是保存到磁盘的一种方式。但是当面对大批量的数据时,为...

发表评论