apply, applymap,map函数的传入参数都是函数, 但是操作对象不一样;区别如下:
1、对数据框(DataFrame)的数据进行按行(axis=0)或按列(axis=1)操作时用apply()
以下是源文档部分重要的解释: def apply(self, func, axis=0): """ Apply a function along an axis of the DataFrame.func : function Function to apply to each column or row. axis : {0 or 'index', 1 or 'columns'}, default 0 Axis along which the function is applied:
Examples -------- >>> df = pd.DataFrame([[4, 9],] * 3, columns=['A', 'B']) >>> df A B 0 4 9 1 4 9 2 4 9 Using a numpy universal function (in this case the same as ``np.sqrt(df)``): >>> df.apply(np.sqrt) A B 0 2.0 3.0 1 2.0 3.0 2 2.0 3.0 Using a reducing function on either axis >>> df.apply(np.sum, axis=0) A 12 B 27 dtype: int64 >>> df.apply(np.sum, axis=1) 0 13 1 13 2 13 dtype: int64
2、对数据框(DataFrame)的每一个数据进行操作时用applymap(),返回结果是DataFrame格式
applymap(self, func): """ Apply a function to a Dataframe elementwise. Parameters ---------- func : callable Python function, returns a single value from a single value. Returns ------- DataFrame Transformed DataFrame.
Examples -------- >>> df = pd.DataFrame([[1, 2.12], [3.356, 4.567]]) >>> df 0 1 0 1.000 2.120 1 3.356 4.567 >>> df.applymap(lambda x: x**2) 0 1 0 1.000000 4.494400 1 11.262736 20.857489
3、对Series的每一个数据进行操作时用map() ; 返回的数据类型也是serise
import numpy as np import pandas as pd a = pd.Series(np.array(range(10))) b = a.map(lambda x:x**2) print(b)0 0
1 1
2 4
3 9
4 16
5 25
6 36
7 49
8 64
9 81
dtype: int64