如何在指定的时间间隔使用 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
我有一个看起来像这样的数据框:
+---------+---------+
| 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