熊猫仅在以后的行中有值时才填充

时间:2018-12-05 12:26:35

标签: python pandas

如果您有熊猫数据框

A    B    C
1    1    NA
2    1    1
3    NA   3
NA   NA   NA
4    NA   NA
5    NA   4

如果在NA和数据帧末尾之间有一个值,我只想填充na。这可能吗?

所以输出将是

A    B    C
1    1    NA
2    1    1
3    NA   3
3    NA   3
4    NA   3
5    NA   4

2 个答案:

答案 0 :(得分:2)

使用ffillbfill

df.ffill().where(df.bfill().notna())
# Or,
# df.where(df.bfill().isna(), df.ffill())

     A    B    C
0  1.0  1.0  NaN
1  2.0  1.0  1.0
2  3.0  NaN  3.0
3  3.0  NaN  3.0
4  4.0  NaN  3.0
5  5.0  NaN  4.0

答案 1 :(得分:1)

使用maskffill进行正向填充,并使用反向填充测试非缺失值:

df = df.mask(df.ffill().notnull(),df.bfill())

或者将numpy.whereDataFrame的构造函数一起使用:

df = pd.DataFrame(np.where(df.ffill().notnull(),df.bfill(), df), 
                  index=df.index, 
                  columns=df.columns)

print (df)
     A    B    C
0  1.0  1.0  NaN
1  2.0  1.0  1.0
2  3.0  NaN  3.0
3  4.0  NaN  4.0
4  4.0  NaN  4.0
5  5.0  NaN  4.0