【发布时间】:2018-07-10 08:43:47
【问题描述】:
有一个api函数
get_next_trading_date(exchange='SZSE', date='2017-05-01')
我有一个 DataFrame backTestRecordAfterModified 如下所示
backTestRecordAfterModified['createdAt']=backTestRecordAfterModified['createdAt'].apply(func=get_next_trading_date, exchange='SZSE')
控制台显示消息:TypeError: get_next_trading_date() got multiple values for argument 'exchange'
那么,如何正确传递参数
补充
backTestRecordAfterModified['createdAt'] = backTestRecordAfterModified['createdAt'].apply(lambda date: get_next_trading_date(date, exchange='SZSE'))
上面的代码仍然显示同样的错误。
我添加get_next_trading_date的定义
我刚刚得到了最终的答案。
backTestRecordAfterModified['createdAt']=backTestRecordAfterModified['createdAt'].apply(lambda date: get_next_trading_date(date=date,exchange='SZSE'))
【问题讨论】:
-
我认为 apply 函数需要一个元组作为
args参数。您正在传递一个字符串作为(我认为不存在的)exchange参数。你可以试试apply(func=get_next_trading_date, args=('SZSE'))。 -
作为替代方案,您始终可以使用 lambda 函数:
apply(lambda x: get_next_trading_date(exchange="SZSE", x))。 -
您是否尝试过颠倒定义中的参数顺序?
get_next_trading_date(date='2017-05-01', exchange='SZSE') -
@jp_data_analysis ,get_next_trading_date函数是sdk提供的api,所以参数的位置是固定的。
-
@jp_data_analysis:我刚刚注意到我的第一个建议不起作用。我添加了一个工作方法的答案,使用 lambda 函数在
apply()内部的调用中反转get_next_trading_date()的参数。