Pandas中map(), apply(), applymap()用法总结

这是一篇最基础的Pandas用法总结,也方便自己日后进行复习与查询。
这一次我们来总结一下Pandas中的map类函数。

Python中自带的map()函数

先从Python中自带的map()函数说起。简单来说,map函数的作用是,针对一个列表(实际上为一个或多个可迭代的序列,这里以一个列表为例),将一个函数作用在列表上的每一个元素
以经典的计算数的平方为例:

def square(x):
    return x**2

# 第一个参数传入自定义的函数名,第二个参数传入列表
# python3.x中map返回的是迭代器,可以用list()转换为列表输出
list(map(square, [2, 3, 5]))
[out]:
[4, 9, 25]

除了传入自定义的函数名之外,还可以传入lambda匿名函数。

  • lambda匿名函数只提供一个参数时
list(map(lambda x: x**2, [2, 3, 5]))
[out]:
[4, 9, 25]
  • lambda匿名函数提供两个参数时
# x、y中每个元素分别相加
list(map(lambda x, y: x + y, [1, 5, 6], [2, 4, 5]))
[out]:
[3, 9, 11]
  • 当map的第二个参数为字典时,map只对字典中的key起作用
list(map(lambda x: x**2, {1:7, 2:5}))  # 对每一个key平方
[out]:
[1, 4]
Pandas中的map()函数

pandas中的map()函数是针对Series来说的,是将一个函数作用在Series中的每一个元素上。

df = pd.DataFrame([['F',90, 88, 85],
                   ['M', 75, 97, 74],
                   ['F', 82, 73, 91],
                   ['M', 93, 99, 96]],
                  columns=['gender','chinese', 'math', 'english'],
                  index = ['小红', '小亮', '小兰', '小明'])
print(df)
[out]:
     gender  chinese  math  english
小红      F       90    88       85
小亮      M       75    97       74
小兰      F       82    73       91
小明      M       93    99       96

在map()中传入一个函数

# 每人语文成绩加5分
# 此时匿名函数中的x指代的是Series中的一个元素
df['chinese'] = df['chinese'].map(lambda x: x +5)
df
[out]:
     gender  chinese  math  english
小红      F       95    88       85
小亮      M       80    97       74
小兰      F       87    73       91
小明      M       98    99       96

在map()中也可以传入一个字典:

# 将性别一列,F映射成0, M映射成1
d = {'F':0, 'M':1}
df['gender'] = df['gender'].map(d)
df
[out]:
      gender  chinese  math  english
小红       0       95    88       85
小亮       1       80    97       74
小兰       0       87    73       91
小明       1       98    99       96
Pandas中的applymap()函数

Pandas中的applymap()函数是针对DataFrame来说的,是将一个函数作用在DataFrame中的每一个元素上。

# 将df中的每一个元素都转成字符串,并在末尾添加A
# 此时匿名函数中的x指代的是DataFrame中的一个元素
df2 = df.applymap(lambda x: str(x) + 'A')
df2
[out]:
     gender chinese math english
小红     0A     95A  88A     85A
小亮     1A     80A  97A     74A
小兰     0A     87A  73A     91A
小明     1A     98A  99A     96A
Pandas中的apply()函数

Pandas中的apply()函数也是针对DataFrame来说的,但是这次是将一个函数作用在DataFrame中的一整列或一整行上。
其中,参数axis=1是将函数作用在一整行,axis=0(为默认值)作用在一整列。

# 增加一列total,值为语数外三科之和
# 此时匿名函数中的x指代的是一整行
df['total'] = df[['chinese', 'math', 'english']].apply(lambda x: x.sum(), axis = 1)
df
[out]:
      gender  chinese  math  english  total
小红       0       95    88       85    268
小亮       1       80    97       74    251
小兰       0       87    73       91    251
小明       1       98    99       96    293

# 增加一行,计算每一列的平均值
# 此时匿名函数中的x指代的是一整列
df.loc['平均'] = df.apply(lambda x: x.mean(), axis=0)
  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值