How to implement sql coalesce in pandas

后端 未结 5 1543
Happy的楠姐
Happy的楠姐 2020-12-10 11:54

I have a data frame like

df = pd.DataFrame({\"A\":[1,2,np.nan],\"B\":[np.nan,10,np.nan], \"C\":[5,10,7]})
     A     B   C
0  1.0   NaN   5
1  2.0  10.0  10         


        
5条回答
  •  慢半拍i
    慢半拍i (楼主)
    2020-12-10 12:53

    option 1
    pandas

    df.assign(D=df.lookup(df.index, df.isnull().idxmin(1)))
    
         A     B   C    D
    0  1.0   NaN   5  1.0
    1  2.0  10.0  10  2.0
    2  NaN   NaN   7  7.0
    

    option 2
    numpy

    v = df.values
    j = np.isnan(v).argmin(1)
    df.assign(D=v[np.arange(len(v)), j])
    
         A     B   C    D
    0  1.0   NaN   5  1.0
    1  2.0  10.0  10  2.0
    2  NaN   NaN   7  7.0
    

    naive time test
    over given data

    over larger data

提交回复
热议问题