Loading

Python中的map()、apply()和applymap()函数

参考资料:
《对比Excel,轻松学习Python数据分析》
《Intermediate Python》

本文主要简单介绍了Python中非常强大的map()函数和pandas中类似的apply()applymap()函数。

map()

map(function, args)

map()函数对序列args中的每个值进行相同的function操作,最终得到一个结果序列。

大多数情况下,我们需要把列表中的所有元素一个一个地传递给函数,并收集输出,比如说:

x_s = [1, 2, 3]
y_s = [3, 2, 1]
result = list()

for x, y in zip(x_s, y_s):
    result.append(x + y)

运行结果:

map()可以让我们使用一种简单且优雅得多的方式实现。
示例

x_s = [1, 2, 3]
y_s = [3, 2, 1]

# 对序列x_s和y_s中的对应元素进行相加
a = map(lambda x, y:x+y, x_s, y_s)

map()函数生成的结果序列不会把全部结果显示出来,要想获得结果序列,可以使用list()方法。

大多数情况下,我们使用匿名函数(lambda)来配合map()

map()不仅可用于一列表的输入,甚至可以用于一列表的函数

def multiply(x, y):
    return (x * y)

def add(x, y):
    return (x + y)

funcs = [multiply, add]    # 包含两个函数的列表

for x, y in zip(x_s, y_s):
    value = map(lambda f: f(x, y), funcs)
    print(list(value))

运行结果:

apply()和applymap()

在DataFrame中与map()函数类似的函数有两个:

  1. apply()
  2. applymap()

apply()

apply()函数主要用于对DataFrame中的某一column或row中的元素执行相同的函数操作。
新建一个DataFrame如下:

对某一列(column)进行操作

# 对C1列中的每一个元素加1
df["C1"].apply(lambda x:x+1)

运行结果:

对某一行(row)进行操作

# 对第1行的每一个元素加1
df.loc[1].apply(lambda x:x+1)

运行结果:

当然,apply()也可对DataFrame的每一个元素进行操作

# 对df表中的每一个元素加1
df.apply(lambda x:x+1)

运行结果:

applymap()

applymap()函数用于对DataFrame中的每一个元素执行相同的函数操作。

# 对df表中的每一个元素加1
df.applymap(lambda x:x+1)

运行结果:

posted @ 2021-12-24 09:38  活用数据  阅读(429)  评论(0编辑  收藏  举报