【发布时间】:2016-02-24 18:11:20
【问题描述】:
我的问题在这里: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.apply.html#pandas.Series.apply。
如果你有
def subtract_custom_value(x, custom_value):
return x-custom_value
然后
series.apply(subtract_custom_value, args=(5,))
有效,但无效
series.apply(subtract_custom_value, args=(,5))
都没有
series.apply(subtract_custom_value, args=(5))
我不明白他们为什么选择这种语法,因为按照“substract_custom_values”参数的顺序,5 实际上匹配“custom_value”,而不是 x,它是通过“apply”函数提供的“Series”。
因此,我想知道他们为什么选择更改顺序以便 custom_value 在 args 中排在第一位,以及为什么最后需要逗号(不添加它会破坏语法)。
提前致谢
【问题讨论】:
-
这是因为参数 arg 必须是一个序列,所以你要传递一个元组,而你的 func 的第一个参数是
Series值,所以看起来很奇怪,如果你传递了args=([5])然后这将在您传递单个元素的序列时起作用,这就是其他 2 次尝试失败的原因,因为5不是序列并且(,5)与您的参数不匹配,因为您有 2 个 args 但第一个 arg已经是Series值,如果您的 func 接受 3 个参数,那么它不会引发错误
标签: python pandas syntax apply