擅长:python、mysql、java
<p>apply函数是为pandas系列的每个值调用的,默认情况下,该值作为参数传递给函数。你知道吗</p>
<p>指定的附加参数在序列值之后传递。
在您的示例中,每次函数调用</p>
<pre><code>get_next_trading_date(<i-th value of the series>, exchange='SZSE')
</code></pre>
<p>但是在函数中,第一个参数是<code>exchange</code>,因此<code><i-th value of the series></code>(当前日期)被传递给<code>exchange</code>,然后还有另一个关键字参数试图设置相同的变量。这会导致错误。更多关于<a href="https://stackoverflow.com/a/21765286/3273991">here</a>。你知道吗</p>
<p>你有两个选择。你知道吗</p>
<p>a)更改函数定义以<code>date</code>作为第一个参数,这样就不必更改函数调用。但是一定要在调用这个函数的任何地方进行更改。你知道吗</p>
<pre><code>get_next_trading_date(date='2017-05-01', exchange='SZSE')
</code></pre>
<p>b)将函数调用更改为传递日期作为第二个参数。你知道吗</p>
<pre><code>backTestRecordAfterModified['createdAt'] = backTestRecordAfterModified['createdAt'].apply(lambda date: get_next_trading_date(date, exchange='SZSE'))
</code></pre>
<p>或者简化为</p>
<pre><code>backTestRecordAfterModified['createdAt'].apply(lambda date: get_next_trading_date(date, exchange='SZSE'), inplace=True)
</code></pre>