【问题标题】:Faster way to choose minimum of two column if condition meets else just one如果条件满足,则选择最少两列的更快方法,否则只有一列
【发布时间】:2021-08-17 14:09:36
【问题描述】:

如果['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
)

【问题讨论】:

    标签: python python-3.x pandas dataframe


    【解决方案1】:

    通过np.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)
    

    【讨论】:

      猜你喜欢
      • 2017-01-13
      • 2011-10-16
      • 2020-11-11
      • 1970-01-01
      • 2017-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多