将参数传递给 Pandas Dataframe apply 函数的语法

Syntax for Passing Args to a Pandas Dataframe apply function

我的问题是: 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" args 的顺序中,5 实际上匹配 "custom_value",而不是 x,它是 "Series" 通过 "apply"函数。

因此我想知道为什么他们选择更改顺序以使 custom_value 在 args 中排在第一位,以及为什么末尾需要逗号(不添加逗号会破坏语法)。

提前致谢

他们没有选择那样的东西。正如您链接的文档中所述, args 应该是一个元组。使用元组(或另一种可迭代对象)它可能会起作用,前提是其元素的数量和类型合适。使用不可迭代的东西,它不会工作。使用无效的 python 语法,你会得到一个语法错误。 Python一切如常。

现在关于你的例子:

  • (5,) 是一个只有一个元素的元组。
  • (,5) 是无效的 python 语法,pandas 对此无能为力。
  • (5) 求值为数字,而不是元组。