假设我有一个数据帧,如下所示:
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”中的位置相等时,我才尝试向后填充“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
我该怎么做?
最佳答案
您可以使用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
关于python - Pandas :根据另一列向后填充缺失值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41883357/