pandas 的apply
函数既适用于Series,又适用于DataFrame,是元素级(elementwise) 的运算。
有df如下,以此为例进行说明。
col1 | col2 | col3 | |
---|---|---|---|
0 | 1 | 2 | 3 |
1 | 4 | 5 | 6 |
2 | 7 | 8 | 9 |
Series
Series.apply(func, convert_dtype=True, args=(), **kwds)
Parameters
func - function, Python function or NumPy ufunc to apply.convert_dtype - bool, default True Try to find better dtype for elementwise function results. If False, leave as dtype=object.
args - tuple, Positional arguments passed to func after the series value.
**kwds - Additional keyword arguments passed to func.
Returns
Series or DataFrame If func returns a Series object the result will be a DataFrame.
# 求col1每个元素的平方,以下两种方法结果相同
df['col1'].apply(np.square)
df['col1'].apply(lambda x: np.square(x))
# 自定义一个需要传递参数的函数
def calfunc(x,val):
return x+val
# 这时上面的两种方法变为:
df['col1'].apply(calfunc,args=(5,))
df['col1'].apply(lambda x: calfunc(x,5))
# 也可以直接使用匿名函数
df['col1'].apply(lambda x: x+5)