擅长:python、mysql、java
<p>对行进行迭代是非常低效的。您应该<strong>直接使用矢量化函数或Pandas函数处理列。事实上,熊猫将数据<em>列主</em>存储在内存中。因此,逐行访问需要从内存中提取和聚合来自许多不同位置的数据<em>矢量化</em>不可能或很难有效实现(因为大多数硬件本身无法将其矢量化)。此外,Python<em>循环</em>通常非常慢(如果使用主流的CPython解释器)</p>
<p>您可以直接使用Pandas或<strong>Numpy</strong>处理列。请注意,如果使用定义良好的<strong>本机类型(float、小整数和有界字符串,而不是像无界字符串和大整数这样的Python对象),Numpy操作要快得多。还要注意,Pandas已经在内部使用Numpy存储数据</p>
<p>以下是一个例子:</p>
<pre class="lang-py prettyprint-override"><code>import pandas as pd
import numpy as np
df = pd.DataFrame({'columnA':[1, 4, 5, 7, 8], 'columnB':[4, 7, 3, 6, 9], 'columnC':[5, 8, 6, 1, 2]})
a = df['columnA'].to_numpy()
b = df['columnB'].to_numpy()
c = df['columnC'].to_numpy()
# You can use np.isclose for a row-by-row result stored into an array
print(np.allclose(a/b, c))
</code></pre>