代码之家  ›  专栏  ›  技术社区  ›  saga

Pandas条件比较:基于多列

  •  1
  • saga  · 技术社区  · 4 年前

       col1  col2  col3  col4  
    0     1     2     3     4    
    1     2     2     3     4    
    2     3     4     3     5   
    3     4     3     2     1   
    

    我想添加一个基于以下内容的新列:

    if (col1 & col2) < (col3 & col4) --- > 2
    

    我采用了类似于 this post ,只是没有 max() 如下所示,但都不起作用:

    df[['col1','col2']] < df[['col3','col4']] 
    
    (df['col1'] and df['col2']) < (df['col3'] and df['col4'])
    

    1 回复  |  直到 4 年前
        1
  •  1
  •   Quang Hoang    4 年前

    IIUC:

    mask = df[['col1','col2']].max(1) < df[['col3','col4']].min(1)
    
    df['new_col'] = np.where(mask, 2, np.nan)
    

       col1  col2  col3  col4  new_col
    0     1     2     3     4      2.0
    1     2     2     3     4      2.0
    2     3     4     3     5      NaN
    3     4     3     2     1      NaN