python - 仅当存在一个具有空值的后续行时,才在数据框中前向填充一列
问题描述
只有当它有一个带有空值的行时,我才需要转发填充熊猫数据框中的一列。例如:
col
v1
nan
v2
nan
v3
nan
nan
v4
nan
我需要的输出是:
col
v1
v1
v2
v2
v3
nan
nan
v4
v4
解决方案
tmp1 = df['col'].shift(fill_value=df['col'][df.index[0]])
tmp2 = df['col'].shift(-1, fill_value=tmp1[tmp1.index[-1]])
m = df['col'].isna() & ~tmp1.isna() & ~tmp2.isna()
df.loc[m, 'col'] = tmp1[m]
print(df)
印刷:
col
0 v1
1 v1
2 v2
3 v2
4 v3
5 NaN
6 NaN
7 v4
8 v4