python - Pandas:根据另一列向后填充缺失值

标签 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

我该怎么做?

最佳答案

您可以使用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/

相关文章:

jquery - 为什么我来自 Django 的 JSON 在大约 2.1MB 时被截断?

python - 使用 MySQLdb 执行 INSERT 查询但表为空

python - Pandas - DateTime groupby 到结构化字典

python - Pandas:将数组作为具有多个 groupby 列的聚合求和

python - 有没有办法从不同长度的 Pandas 数据框中移动多行?

python - 如何检查 "if condition"并即时分配? (Python)

python - 如何标记 pandas 数据框中特定值的第 n 个观察值?

python - CouldntDecodeError : Decoding failed. ffmpeg 返回错误代码:69

python - 写入现有的 xlsx 文件,仅覆盖 Python 中的一些工作表

python替换数据框 Pandas 中所有列的多个值