python - 在每行中填充第一个 NaN

标签 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 

我想用“Exit”填充每行的第一个 NA(所以对于 ID 1,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

最佳答案

您可以先用 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

关于python - 在每行中填充第一个 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54981150/

相关文章:

python - 基于日期时间的数据帧内连接

Python HTTPServer 异常导致它失败

python - 一次绘制一个图形而不关闭旧图形(matplotlib)

python - 使用 Pandas 将特定值添加到根据条件选择的行

python - 使用 Sqlalchemy 和 Pandas 对多对多关系进行批量插入

python - Pandas 列的条件值

从时间序列 DataFrame 中选择最新值的 Pythonic 方法

python - 访问其他py文件类

python - 导入错误 : No module named flask. ext.httpauth

python - 如果一个是 imshow 图,请在 matplotlib 中垂直对齐两个图?