满足条件时填写nan值



我有一个如下所示的数据框架:

df = pd.DataFrame({'A': [1, np.nan, np.nan, np.nan, 3, 3, 3, 3, np.nan, np.nan, np.nan, 5, 5, 5, 6, 6, 6, np.nan, np.nan, np.nan, 6, 7, 8, 9, 10,np.nan, np.nan, 10, 11]})

我想只在前一个非nan值等于当前的非nan值时填充nan值。

预期输出:

df = pd.DataFrame({'A': [1, np.nan, np.nan, np.nan, 3, 3, 3, 3, np.nan, np.nan, np.nan, 5, 5, 5, 6, 6, 6, np.nan, np.nan, np.nan, 6, 7, 8, 9, 10, np.nan, np.nan,10, 11],'fill_nan': [1, np.nan, np.nan, np.nan, 3, 3, 3, 3, np.nan, np.nan, np.nan, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 7, 8, 9, 10, 10, 10,10, 11]})

尝试比较bfillffill:

s = df.ffill()
out = s.where(s.eq(df.bfill()))

输出:

A
0      1.0
1      NaN
2      NaN
3      NaN
4      3.0
5      3.0
6      3.0
7      3.0
8      NaN
9      NaN
10     NaN
11     5.0
12     5.0
13     5.0
14     6.0
15     6.0
16     6.0
17     6.0
18     6.0
19     6.0
20     6.0
21     7.0
22     8.0
23     9.0
24    10.0
25    10.0
26    10.0
27    10.0
28    11.0