有没有更快的方法来运行这段基于pandas应用函数的代码?

问题描述 投票:1回答:1

我正在运行这段代码,以创建一个新的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秒)。有没有更好更快的写法?

python pandas
1个回答
2
投票

加速使用 numpy where

s=df.A.astype(int).map(label_dict)
df['C']=np.where(df.B==1,s,s+1)
© www.soinside.com 2019 - 2024. All rights reserved.