在每行中填充第一个NaN

时间:2019-03-04 10:20:51

标签: python pandas

我的输入数据框为

ID  Visit11 Visit12 Visit13 Visit1Int4  Visit15
1   Orange              
2   Orange  Apple   
3   Grapes  
4   Apple   
5   Orange Apple    
6   Apple  
7   Banana  
8   Banana  Apple   Banana  Apple   Banana 

我想用“退出”填充每一行的第一个NA(ID 1的SO,Visit12应该是“ Exit”,ID2的Visit13应该是“ Exit”,等等)。最终输出应类似于

ID  Visit11 Visit12 Visit13 Visit1Int4  Visit15
1   Orange  Exit            
2   Orange  Apple   Exit         
3   Grapes  Exit            
4   Apple   Exit            
5   Orange Apple    Exit       
6   Apple  Exit             
7   Banana  Exit            
8   Banana  Apple   Banana  Apple   Banana E

1 个答案:

答案 0 :(得分:4)

您可以先用np.nan替换空值,然后选择DataFrame.isnacumsum。然后使用np.where分配Exit,其中cumsum1,否则分配df中的值:

import numpy as np

m = df.replace('',np.nan).isna().cumsum(axis=1)
r = np.where(m == 1, 'Exit', df)
pd.DataFrame(r, columns=df.columns).fillna('')

   ID  Visit11 Visit12 Visit13 Visit1Int4 Visit15
0   1  Orange    Exit                           
1   2  Orange   Apple    Exit                   
2   3  Grapes    Exit                           
3   4   Apple    Exit                           
4   5  Orange   Apple    Exit                   
5   6   Apple    Exit                           
6   7  Banana    Exit                           
7   8  Banana   Apple  Banana      Apple  Banana