如果您有熊猫数据框
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
答案 0 :(得分:2)
使用ffill
和bfill
。
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)
使用mask
和ffill
进行正向填充,并使用反向填充测试非缺失值:
df = df.mask(df.ffill().notnull(),df.bfill())
或者将numpy.where
与DataFrame
的构造函数一起使用:
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