擅长:python、mysql、java
<p>如果您正在处理一个大型数据集,那么<code>np.vectorize()</code>应该有助于绕过<code>apply()</code>开销,这应该会快一点</p>
<pre><code>import numpy as np
v = np.vectorize(lambda x: get_id(x['name'], x['sex']))
df['id'] = v(df)
</code></pre>
<p><strong>编辑:</strong></p>
<p>为了获得更高的速度,您也可以只传递函数<code>get_id</code>而不是使用lambda函数,并传递<code>df.*.values</code>而不是<code>df.*</code></p>
<pre><code>v = np.vectorize(get_id)
df['id'] = v(df['name'].values, df['sex'].values)
</code></pre>
<p>尝试使用<code>tqdm</code>使用进度条显示进度,而不是在整个过程中打印进度的更新</p>
<pre><code>import numpy as np
from tqdm import tqdm
@np.vectorize
def get_id(name, sex):
global pbar
...
pbar.update(1)
...
return
global pbar
with tqdm(total=len(df)) as pbar:
df['id'] = get_id(df['name'].values, df['sex'].values)
</code></pre>