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

2024-04-26 14:01:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个类似这样的数据帧:

+---------+---------+
| 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 vlaues。但结果并不准确。有没有更好的方法来解决这个问题。你知道吗


Tags: 数据方法dfdatalenshiftvalue时间
1条回答
网友
1楼 · 发布于 2024-04-26 14:01:48

用途:

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

相关问题 更多 >