空值填充

DolphinDB 提供了 4 种填充空值的方法:

  1. bfillbfill! :使用空值后的非空元素填充空值。

  2. ffillffill! :使用空值前的非空元素填充空值。

  3. lfilllfill! :线性填充非空元素之间的空值。

  4. nullFillnullFill! :用指定值填充空值。

对于 bfillffill,我们可以使用可选参数 limit 来指定需要填充的空值。

例1

ID=take(1,6) join take(2,6)
date=take(2018.01.01..2018.01.06, 12)
x=3.2 5.2 NULL 7.4 NULL NULL NULL NULL 8 NULL NULL 11
t=table(ID, date, x);
t;
ID date x
1 2018.01.01 3.2
1 2018.01.02 5.2
1 2018.01.03
1 2018.01.04 7.4
1 2018.01.05
1 2018.01.06
2 2018.01.01
2 2018.01.02
2 2018.01.03 8
2 2018.01.04
2 2018.01.05
2 2018.01.06 11
update t set x=x.lfill() context by id;
t;
ID date x
1 2018.01.01 3.2
1 2018.01.02 5.2
1 2018.01.03 6.3
1 2018.01.04 7.4
1 2018.01.05
1 2018.01.06
2 2018.01.01
2 2018.01.02
2 2018.01.03 8
2 2018.01.04 9
2 2018.01.05 10
2 2018.01.06 11
update t set x=x.bfill(1) context by id;
t;
ID date x
1 2018.01.01 3.2
1 2018.01.02 5.2
1 2018.01.03 6.3
1 2018.01.04 7.4
1 2018.01.05
1 2018.01.06
2 2018.01.01
2 2018.01.02 8
2 2018.01.03 8
2 2018.01.04 9
2 2018.01.05 10
2 2018.01.06 11
update t set x=x.bfill() context by id;
t;
ID date x
1 2018.01.01 3.2
1 2018.01.02 5.2
1 2018.01.03 6.3
1 2018.01.04 7.4
1 2018.01.05
1 2018.01.06
2 2018.01.01 8
2 2018.01.02 8
2 2018.01.03 8
2 2018.01.04 9
2 2018.01.05 10
2 2018.01.06 11
update t set x=x.ffill() context by id;
t;
ID date x
1 2018.01.01 3.2
1 2018.01.02 5.2
1 2018.01.03 6.3
1 2018.01.04 7.4
1 2018.01.05 7.4
1 2018.01.06 7.4
2 2018.01.01 8
2 2018.01.02 8
2 2018.01.03 8
2 2018.01.04 9
2 2018.01.05 10
2 2018.01.06 11

例2

ID=take(1,6) join take(2,6)
date=take(2018.01.01..2018.01.06, 12)
x=3.2 5.2 NULL 7.4 NULL NULL NULL NULL 8 NULL NULL 11
t=table(ID, date, x);
t;
ID date x
1 2018.01.01 3.2
1 2018.01.02 5.2
1 2018.01.03
1 2018.01.04 7.4
1 2018.01.05
1 2018.01.06
2 2018.01.01
2 2018.01.02
2 2018.01.03 8
2 2018.01.04
2 2018.01.05
2 2018.01.06 11
update t set x=x.nullFill(avg(x)) context by id;
t;
ID date x
1 2018.01.01 3.2
1 2018.01.02 5.2
1 2018.01.03 5.266667
1 2018.01.04 7.4
1 2018.01.05 5.266667
1 2018.01.06 5.266667
2 2018.01.01 9.5
2 2018.01.02 9.5
2 2018.01.03 8
2 2018.01.04 9.5
2 2018.01.05 9.5
2 2018.01.06 11