前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Excel与pandas:使用applymap()创建复杂的计算列

Excel与pandas:使用applymap()创建复杂的计算列

作者头像
fanjy
发布2022-11-16 13:24:28
3.8K0
发布2022-11-16 13:24:28
举报
文章被收录于专栏:完美Excel

标签:Python与Excel,pandas

我们之前讨论了如何在pandas中创建计算列,并讲解了一些简单的示例。通过将表达式赋值给一个新列(例如df['new column']=expression),可以在大多数情况下轻松创建计算列。然而,有时我们需要创建相当复杂的计算列,这就是本文要讲解的内容。

准备演示的数据框架

看一看下面的例子,有一个以百分比表示的学生在校平均成绩列表,我们希望将其转换为字母顺序的分数(即a、B、C、D、F等),分数阈值如下所示:

A:>=90

B:80<=且<90

C:70<=且<80

D:50<=且<70

F:<50

创建我们假设的学生和他们的学校平均数,我们将为学生的分数随机生成1到100之间的数字。

图1

创建一个辅助函数

现在,让我们创建一个取平均值的函数,并将其处理/转换为字母等级。

图2

现在我们要把这个函数应用到每个学生身上。那么,在列中对每个学生进行循环?不!记住,我们永远不应该循环遍历pandas数据框架/系列,因为如果我们有一个大的数据集,这样做效率很低。

pandas applymap()方法

pandas提供了一种将自定义函数应用于列或整个数据框架的简单方法,就是.applymap()方法,这有点类似于map()函数的作用。注意下面的代码,我们只在包含平均值的三列上应用函数。因为我们知道第一列包含字符串,如果我们尝试对字符串数据应用letter_grade()函数,可能会遇到错误。

图3

我们仍然可以使用map()函数来转换分数等级,但是,需要在三列中的每一列上分别使用map(),而applymap()能够覆盖整个数据框架(多列)。

注:本文学习整理自pythoninoffice.com。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-09-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档