Pandasfillna基于前一行的值

2024-09-29 21:36:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一个专栏

valueCount
0.0
nan
2.0
1.0
1.0
1.0
nan
nan
nan
4.0

我想根据下一个值(加法)或上一个值(减法)进行填充。 所以结果应该是

^{pr2}$

我知道这是非常基于条件的,如果我之前的值是0,我可以将+1添加到nan行,否则我应该从0,1,2开始添加,依此类推。在

我可以在python的简单列表中实现这个算法,但是在pandas中有没有简单的方法呢?在


Tags: 方法算法pandas列表nan条件专栏pr2
2条回答

在这种情况下,您还可以使用插值和向下取整。但这并不适用于所有数据集。在

考虑:

import pandas as pd
import numpy as np
s = pd.Series([0, np.nan, 2, 1, 1, 1, np.nan, np.nan, np.nan, 4])

然后np.floor(s.interpolate())给出

^{pr2}$

您可以使用:

a = df['valueCount'].isnull()
b = a.cumsum()
c = df['valueCount'].bfill()
d = c + (b-b.mask(a).bfill().fillna(0).astype(int)).sub(1)
df['valueCount'] =  df['valueCount'].fillna(d)
print (df)

   valueCount
0         0.0
1         1.0
2         2.0
3         1.0
4         1.0
5         1.0
6         1.0
7         2.0
8         3.0
9         4.0

细节+解释

^{pr2}$

相关问题 更多 >

    热门问题