如果条件满足,则选择最小两列的更快方法,否则只有一列



如果['Overlap']=='Overlapped',我需要选择'Start_x''Start_y'的最小值,否则只是'Start_x'。我写在下面,但它是一个位慢. 是否有更快的方法做这个?

df3['Start'] = df3[['Start_x','Start_y','Overlap']].apply
(
lambda x:x[['Start_x','Start_y']].min() if x['Overlap']=='Overlapped' 
else x['Start_x'], axis=1
)

Try vianp.where():

import numpy as np
df['Start_x']=np.where(df['Overlap'].eq('Overlapped'),df[['Start_x','Start_y']].min(axis=1),df['Start_x'])

通过loc和布尔屏蔽

df.loc[df['Overlap'].eq('Overlapped'),'Start_x']=df[['Start_x','Start_y']].min(axis=1)

相关内容

最新更新