在DataFrame中填充NaN的快速方法

时间:2020-11-07 16:22:32

标签: python pandas

我有DataFrame个对象df,其列如下:

[In]: df
[Out]:
                 id            sum
0                 1            NaN
1                 1            NaN
2                 1              2
3                 1            NaN
4                 1              4
5                 1            NaN
6                 2            NaN
7                 2            NaN
8                 2              3
9                 2            NaN
10                2              8
10                2            NaN
...             ...            ...
[1810601 rows x 2 columns]

我的列中有很多NaN值,我想通过以下方式填充它们:

  • 如果NaN在开头(每index的第一个id等于0),则应该是0
  • 否则,如果NaN我想从同一个id的先前索引中获取价值

输出应如下所示:

[In]: df
[Out]:
                 id            sum
0                 1              0
1                 1              0
2                 1              2
3                 1              2
4                 1              4
5                 1              4
6                 2              0
7                 2              0
8                 2              3
9                 2              3
10                2              8
10                2              8
...             ...            ...
[1810601 rows x 2 columns]

我尝试使用iterrows()循环“逐步”执行此操作,但这是非常无效的方法。我相信使用熊猫方法可以更快地完成

1 个答案:

答案 0 :(得分:2)

尝试按照groupby的建议填充

df['sum'] = df.groupby('id')['sum'].ffill().fillna(0)