用前一行的值替换行的某些缺失值

时间:2017-06-25 13:09:34

标签: python pandas

我有以下数据集。

我有以下数据集。如您所见,A,B,D和R列中的某些值缺失。我将使用前一行中的精确值替换值。例如,在第4行中,缺少B列和R列的值,我需要用前一列中的21和2替换它们。

  A   B        D        R        sentence              ADR1         ADR2     
 135 21  EffexorXR.21    1    lack of good feeling.     good        feeling
                                                          0              0
 136 21  EffexorXR.21    2    Feel disconnected        disconnected   feel    
 136     EffexorXR.21                                     0            0
 142 22  EffexorXR.22    1    Weight gain               gain         
 142                     1                                1    

最终出局是这样的:

  A  B          D        R        sentence              ADR1         ADR2     
 135 21  EffexorXR.21    1    lack of good feeling.     good        feeling
 135 21  EffexorXR.21    1                               1             0
 136 21  EffexorXR.21    2    Feel disconnected        disconnected   feel    
 136 21  EffexorXR.21    2                                 0            0
 142 22  EffexorXR.22    1    Weight gain               gain         
 142 22  EffexorXR.22    1                                1    

我可以使用copy,但我不知道如何在行之间进行迭代。有什么建议吗?

1 个答案:

答案 0 :(得分:5)

如果缺失的值为ffill s,则fillna与方法ffill()使用的内容与NaN相同:

cols = ['A','B','D','R']
df[cols] = df[cols].ffill()

如果缺少的值是空字符串:

cols = ['A','B','D','R']
df[cols] = df[cols].replace('',np.nan).ffill()