如何提升Pandas DataFrame中自定义函数的执行速度?
优化方案
你的代码速度慢的核心原因是df.apply(axis=1)本质是逐行调用Python函数,属于Python层循环,面对万级以上数据时效率极低。改用Pandas向量化操作即可获得数百倍的性能提升,5万条数据的处理耗时可以从7秒降到10毫秒以内。
方案1:布尔索引赋值(性能最优)
仅对符合条件的行做修改,其余行直接复用原值,运算量最小:
# 新列默认复用原area列的值 df['area_uno'] = df['area'] # 定位需要修改的行:number值为adm 且 area值为1 mask = (df['number'] == 'adm') & (df['area'] == 1) # 仅修改符合条件的行的值 df.loc[mask, 'area_uno'] = 'uno-' + df.loc[mask, 'area'].astype(str)
如果你的area列本身就是字符串类型,可以去掉.astype(str)进一步提升速度。
方案2:np.where 三元向量化判断
代码更简洁,性能和方案1基本持平:
import numpy as np df['area_uno'] = np.where( (df['number'] == 'adm') & (df['area'] == 1), 'uno-' + df['area'].astype(str), df['area'] )
内容的提问来源于stack exchange,提问作者user9910379
相关产品推荐
相关产品推荐

