【发布时间】:2020-07-31 19:38:44
【问题描述】:
我正在使用一个数据框,该数据框有一列包含多个 NaN,我想根据以下条件填充: 如果向后和向前最多 3 行有 2 个相等的值,则用该值填充 NaN。
由于这可能不太清楚,下面举几个例子:
col1
0 10
1 10
2 NaN
3 NaN
4 NaN
5 10
6 5
7 NaN
8 5
9 NaN
10 NaN
11 NaN
12 NaN
- 第 2 行中的值在 1 行后退为 10,在前 3 行中为 10。 --> 填充 10
- 第 3 行中的值在 2 行后退为 10,在前 2 行中为 10。 --> 填充 10
- 第 4 行中的值在 3 行后退为 10,在前 1 行中为 10。 --> 用 10 填充
- 第 7 行中的值有一个 5 at 1 row 后退和 5 in 1 row 前进。 --> 用 5 填充
- 第 9 行中的值在 1 行后退为 5,但在前 3 行中没有 5。 --> 那么,就不要填写了
那么,结果会是这样的:
col1
0 10
1 10
2 10
3 10
4 10
5 10
6 5
7 5
8 5
9 NaN
10 NaN
11 NaN
12 NaN
我可以使用任何功能将此逻辑提供给fillna吗?
谢谢!!
【问题讨论】:
-
fillna()的文档指出该方法仅支持ffill或backfill(也分别称为pad和bfill)。您必须自己实现一个函数来解决问题。
标签: python pandas dataframe fillna