【发布时间】:2021-08-06 07:05:10
【问题描述】:
我想apply 沿一列的函数,例如coco.convert,并将参数to = 'ISO3' 与行中的值一起传递给它。
df['alpha-3'] = df['Country'].apply(coco.convert('ISO3'))
遗漏 1 个位置参数:
TypeError: convert() missing 1 required positional argument: 'names'
但是
df['alpha-3'] = df['Country'].apply(coco.convert)
工作正常(我假设它使用默认值)。
如何在这里传递位置参数?
另外,这里到底发生了什么——有人可以解释一下函数是如何传递给apply的吗?
【问题讨论】:
-
"有人能解释一下函数是如何传递给应用的吗?"你到底有什么不明白的?函数只是一个对象,就像任何其他对象一样,
int、list、dict等。它的工作方式完全相同 -
不管怎样,你有read the documentation for the series
.apply的方法吗?有关如何传递其他参数的任何相关信息? -
注意,即使没有 TypeError,
.apply(coco.convert('ISO3'))也不会按照您希望的方式工作,它调用函数coco.convert("ISO3")并传递 result 到.apply,但.apply需要一个函数。 (注意,如果 coco.convert 返回一个函数 本身,这 可能 工作,但这不是你所描述的)
标签: python pandas arguments parameter-passing apply