擅长:python、mysql、java
<p>我个人在处理条件时更喜欢<code>DataFrame.apply</code></p>
<pre><code>d7['CAD'] = d7.apply(lambda row: row.CAD * fxratetable[fxratetable.from_currency == row.Currency].fx_rate.item() \
if row.Category == 'Stack' else row.CAD, axis=1)
</code></pre>
<p><code>fxratetable[fxratetable.from_currency == row.Currency]</code>选择<code>fxratetable</code>中与正确货币对应的行,<code>.fx_rate</code>选择汇率列,<code>.item()</code>给出数字,而不是序列</p>
<p>您可以看到,只有<code>row.Category == 'Stack'</code>条件仍然存在,有问题的序列比较现在是选择的一部分</p>
<p>最后,<code>axis=1</code>用于将函数应用于数据帧行(<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.apply.html" rel="nofollow noreferrer">docu</a>)</p>
<p>我还没有对此进行过广泛的测试,所以请告诉我它是否有效</p>