假设我有一个数据帧,如下所示:

      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/

10-12 22:05