Python 熊猫:如何使用增量值设置列的值?

Python 熊猫:如何使用增量值设置列的值?,python,pandas,Python,Pandas,在列中设置值并为每个匹配项递增值的最简单方法是什么?在下面的示例中,我想将第一个nan替换为21,第二个替换为22,等等。目前,我这样做,但我确信有一种更有效的方法 df=pd.DataFrame({'a':[0,np.nan,np.nan,np.nan],'b':[1,2,3,4]}) df 出[29]: a b 0 0.0 1 1南2 2南3 3南4 新的_值=[] 起始值=21 对于df['a']中的i: 如果np.isnan(i): 新值。追加(开始值) 起始值=1 其他: 新的_值

在列中设置值并为每个匹配项递增值的最简单方法是什么?在下面的示例中,我想将第一个nan替换为21,第二个替换为22,等等。目前,我这样做,但我确信有一种更有效的方法

df=pd.DataFrame({'a':[0,np.nan,np.nan,np.nan],'b':[1,2,3,4]})
df
出[29]:
a b
0  0.0  1
1南2
2南3
3南4
新的_值=[]
起始值=21
对于df['a']中的i:
如果np.isnan(i):
新值。追加(开始值)
起始值=1
其他:
新的_值。追加(i)
df['a']=新的_值
df
出[30]:
a b
0   0.0  1
1  21.0  2
2  22.0  3
3  23.0  4
在您的情况下

df.a=df.a.fillna(21+(df.a.isnull().cumsum()-1))
Out[121]: 
0     0.0
1    21.0
2    22.0
3    23.0
Name: a, dtype: float64

你能提供更多的信息吗?您是否有一组连续的空值,或者可以将它们分开?应该如何处理?也就是说,每个组是从21开始填充的,还是从21开始只是一个计数器?@ALollz可以有0个空值、1个空值、几个空值或只有空值。因此,它们可以分开,也可以不分开。在这两种情况下,我需要连续的数字(列中不重复)。WeNYoBen的回答如我所愿。