首页 > 解决方案 > 有没有更快的方法来运行基于 pandas 应用函数的代码?

问题描述

我正在运行此代码以df根据其他列的条件和值创建熊猫数据框的新列:

df['C'] = df.apply(lambda x: label_dict[int(x['A'])] 
                             if x['B']==1 else 
                             label_dict[int(x['A'])] + 1,
                             axis =1 )

label_dict例如,只有几个术语(实际上更大):

label_dict = {1: 10, 2: 24, 3: 55}

代码df['C]在 10^5 行上需要几秒钟(大约 3)。有没有更好更快的写法?

标签: pythonpandas

解决方案


加快速度numpy where

s=df.A.astype(int).map(label_dict)
df['C']=np.where(df.B==1,s,s+1)

推荐阅读