2. apply
你可以使用
numpy
的ufunc
函数操作pandas
对象。有时,你希望将函数应用到由各列或者各行形成的一维数组上,此时
DataFrame
的.apply()
方法即可实现此功能。.apply(func, axis=0, broadcast=False, raw=False, reduce=None, args=(), **kwds)
func
:一个可调用对象,它会应用于每一行或者每一列axis
:指定应用于行还是列。如果为0/'index'
,则沿着0轴计算(应用于每一列);如果为1/'columns'
,则沿着1轴计算(应用于每一行)。broadcast
:一个布尔值,如果为True
,则结果为DataFrame
(不足的部分通过广播来填充)raw
:一个布尔值。如果为False
,则转换每一行/每一列为一个Series
,然后传给func
作为参数。如果True
,则func
接受到的是ndarray
,而不是Series
reduce
:一个布尔值。用于判断当DataFrame
为空时,应该返回一个Series
还是返回一个DataFrame
。如果为True
,则结果为Series
;如果为False
,则结果为DataFrame
。args
:传递给func
的额外的位置参数(第一个位置参数始终为Series/ndarray
)
有时,你希望将函数应用到
DataFrame
中的每个元素,则可以使用.applymap(func)
方法。之所以不叫map
,是因为Series
已经有个.map
方法。Series
的.apply()
方法应用到Series
的每个元素上:.apply(func, convert_dtype=True, args=(), **kwds)
func
:一个可调用对象,它会应用于每个元素convert_dtype
:一个布尔值。如果为True
,则pandas
会自动匹配func
结果的最佳dtype
;如果为False
,则dtype=object
args
:传递给func
的额外的位置参数。kwds
:传递给func
的额外的关键字参数。
返回结果可能是
Series
,也可能是DataFrame
(比如,func
返回一个Series
)Series
的.map(arg,na_action=None)
方法会应用到Series
的每个元素上:arg
:一个函数、字典或者Series
。如果为字典或者Series
,则它是一种映射关系,键/index label
就是自变量,值就是返回值。na_action
:如果为ignore
,则忽略NaN
返回相同
index
的一个Series