如何在指定的时间间隔使用 shift 填充 pandas 中的缺失值?

How to fill missing values in pandas using shift at specified intervals?

我有一个看起来像这样的数据框:

+---------+---------+
| Value A | Value B |
+---------+---------+
| 10       |       1 |
| 20       |       2 |
| 30       |       3 |
| 40       |       4 |
| 50       |       5 |
| 60       |     NaN |
| 70       |     NaN |
| 80       |     NaN |
| 90       |     NaN |
| 100      |     NaN |
+---------+---------+

我想用以前的值填充这些缺失值,但移动如下所示。


+---------+---------+
| Value A | Value B |
+---------+---------+
| 10       |       1 |
| 20       |       1 |
| 30       |       2 |
| 40       |       2 |
| 50       |       3 |
| 60       |       3 |
| 70       |       4 |
| 80       |       4 |
| 90       |       5 |
| 100      |       5 |
+---------+---------+

问题是这些缺失值可能在任一列中。我尝试手动完成,但这会花费很多时间。填充值也取决于 A 列的 len()。我的方法是这样的:

missing_data_len = len(valueA)-len(valueB)
df['ValueB'].shift(missing_data_len)

然后用ffill填入NaN值。但结果不准确。有没有更好的方法来解决这个问题。

使用:

null=df['Value_B'].isnull()
r=(len(df)/null.sum())
df['Value_B']=df.loc[~null,'Value_B'].repeat(r).reset_index(drop=True)

   Value_A  Value_B
0       10      1.0
1       20      1.0
2       30      2.0
3       40      2.0
4       50      3.0
5       60      3.0
6       70      4.0
7       80      4.0
8       90      5.0
9      100      5.0