您可以将任何数量的参数传递给apply
正在通过未命名参数传递,作为元组传递给args
参数或通过内部由关键字捕获为字典的其他关键字参数传递给函数的kwds
函数。
例如,让我们构建一个函数,该函数对于3到6之间的值返回True,否则返回False。
s = pd.Series(np.random.randint(0,10, 10))
s
0 5
1 3
2 1
3 1
4 6
5 0
6 3
7 4
8 9
9 6
dtype: int64
s.apply(lambda x: x >= 3 and x <= 6)
0 True
1 True
2 False
3 False
4 True
5 False
6 True
7 True
8 False
9 True
dtype: bool
这个匿名函数不是很灵活。让我们创建一个带有两个参数的普通函数,以控制我们在系列中所需的最小值和最大值。
def between(x, low, high):
return x >= low and x =< high
我们可以通过将未命名的参数传递给来复制第一个函数的输出args
:
s.apply(between, args=(3,6))
或者我们可以使用命名参数
s.apply(between, low=3, high=6)
或两者兼而有之
s.apply(between, args=(3,), high=6)
functools.partial
,还是starmap
?