首页 > 解决方案 > 仅当存在一个具有空值的后续行时,才在数据框中前向填充一列

问题描述

只有当它有一个带有空值的行时,我才需要转发填充熊猫数据框中的一列。例如:

col

v1
nan
v2
nan
v3
nan
nan
v4
nan

我需要的输出是:

col

v1
v1
v2
v2
v3
nan
nan
v4
v4

标签: pythonpandas

解决方案


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

推荐阅读