如何一次为多个列填充Nan值?

时间:2019-11-23 19:27:49

标签: python python-3.x pandas fillna

df
   Fruits  Veg       Non_veg
 1 Apple   Broccoli  Chicken
 2 Banana   Nan       Nan
 3  Nan    Tomato     Nan

在上面的示例数据框中,我有Nan值,需要填写 一次全部向前填充,我使用的代码是:

df[['Fruits','Veg','Non_veg']].fillna(method='ffill',inplace=True)

这种编码方式正确吗?如果前填充单元格具有上述数据框中的另一个Nan值,该如何克服?

填充的预期输出为:

df
       Fruits  Veg       Non_veg
     1 Apple   Broccoli  Chicken
     2 Banana  Broccoli  Chicken
     3 Banana  Tomato    Chicken

3 个答案:

答案 0 :(得分:1)

使用:DataFrame.ffill。在这里您可以了解如何使用就地How to use inplace=True

#df.replace('Nan',np.nan) #if NaN is string
cols=['Fruits','Veg','Non_veg']
df[cols]=df[cols].ffill()

答案 1 :(得分:0)

请勿在切片对象上使用inplace。进行伪装

df.loc[:, ['Fruits','Veg','Non_veg']] = df.loc[:, ['Fruits','Veg','Non_veg']].ffill()

答案 2 :(得分:0)

您应删除inplace=True
df['Fruits','Veg','Non_veg'] = df['Fruits','Veg','Non_veg'].fillna(method= 'ffill')