<p>有几个原因可以解释为什么这可能会变慢</p>
<h2>.九</h2>
<p>{{label{1}和cdr}都是基于索引的{1},但对于cd1}和cd1}都是严格的索引。
我假设<code>.ix</code>在幕后做了很多魔术,以确定是否需要标签或基于位置的索引</p>
<h2>.I错误</h2>
<p>返回一个(新的?)<code>Series</code>表示每行。基于列的迭代可能更快,比如<code>.iteritems</code>在列上迭代</p>
<h2>【】【】</h2>
<p><code>df_mBase.ix[i][idx]</code>返回一个<code>Series</code>,然后从中获取元素<code>idx</code>,该元素的值为1。在</p>
<pre><code>df_mBase.loc[i, idx] = 1
</code></pre>
<p>应该改善一下</p>
<h2>标杆管理</h2>
^{pr2}$
<blockquote>
<pre><code> 0.03 0.1 0.3 1.0 3.0
assign_applymap 0.001989 0.009862 0.018018 0.105569 0.549511
assign_vectorized 0.002974 0.008428 0.035994 0.162565 3.810138
assign_index 0.013717 0.137134 1.288852 14.190128 111.102662
assign_column2 0.026260 0.186588 1.664345 19.204453 143.103077
assign_column 0.016811 0.212158 1.838733 21.053627 153.827845
assign_itertuples 0.025130 0.249886 2.125968 24.639593 185.975111
assign_iloc_product_range 0.026982 0.247069 2.199019 23.902244 186.548500
assign_iloc_product 0.021225 0.233454 2.437183 25.143673 218.849143
assign_loc_product 0.018743 0.290104 2.515379 32.778794 258.244436
assign_loc 0.029050 0.349551 2.822797 32.087433 294.052933
assign_original 0.034315 0.337207 2.714154 30.361072 332.327008
</code></pre>
</blockquote>
<h2>结论</h2>
<p><a href="https://i.stack.imgur.com/RqxOE.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/RqxOE.png" alt="timing plot"/></a></p>
<p>如果可以使用矢量化,请这样做。根据计算结果,可以使用其他方法。如果您只需要使用的值,<code>applymap</code>似乎最快。如果还需要索引和或列,请使用列</p>
<p>如果不能向量化,<code>df[column][index] = x</code>的工作速度最快,以<code>df.iteritems()</code>作为一个接近的秒迭代列</p>