假设我有一个如下数据框:
location col2
0 LA NaN
1 LA 3
2 LA 5
3 LA NaN
4 SF NaN
5 SF NaN
6 SF 7
7 SF 6
只有当上面一行中的位置等于位置时,我才会向后填充“col2”中的缺失值
例如,只在
时向后填充df['location'] == df['location'].shift(-1)
是真的。所以最终的数据框就像:
location col2
0 LA 3
1 LA 3
2 LA 5
3 LA NaN
4 SF 7
5 SF 7
6 SF 7
7 SF 6
我该怎么做?
答案 0 :(得分:4)
您可以使用groupby()
+ bfill()
:
In [185]: df.groupby('location').col2.bfill()
Out[185]:
0 3.0
1 3.0
2 5.0
3 NaN
4 7.0
5 7.0
6 7.0
7 6.0
Name: col2, dtype: float64
将值设置回col2
:
In [186]: df.col2 = df.groupby('location').col2.bfill()
In [187]: df
Out[187]:
location col2
0 LA 3.0
1 LA 3.0
2 LA 5.0
3 LA NaN
4 SF 7.0
5 SF 7.0
6 SF 7.0
7 SF 6.0