擅长:python、mysql、java
<p>下面是一个使用底层numpy数组的更快(但不那么简洁)的解决方案。与<code>replace</code>相比,有约1.7倍的增益</p>
<pre><code>a = prizes.set_index('Rank')['Payout'].values
b = ranking.values-1 # get index as 0/1/2
c = a.take(b.flatten()).reshape(b.shape) # index in 1D and reshape to 2D
pd.DataFrame(c, columns=ranking.columns)
</code></pre>
<p><em>NB。为了清晰起见,我将步骤分解了,但这可以在没有中间变量的情况下完成</em></p>
<p>输出:</p>
<pre><code> 1 2 3
0 100 25 50
1 50 50 100
2 25 100 25
</code></pre>