熊猫:根据另一列填充向后缺失的值

时间:2017-01-26 21:31:37

标签: python pandas

假设我有一个如下数据框:

      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

我该怎么做?

1 个答案:

答案 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