首页 > 解决方案 > 如何将序列号设置为空值?

问题描述

我有以下数据框

id val
1  40
2  null
3  null 
4  30
5  null

我想得到

id val
1  40
2  1
3  2 
4  30
5  3

我试着这样做

df_1['val'][df_1['val'].isnull()] 
= df_1['val'][df_1['val'].isnull()].ffill() + df_1[df_1['val'].isnull()].count()

但这不起作用

标签: pandas

解决方案


您可以按布尔掩码的计数设置,range最后将值解析为整数:NaNsum

m = df_1['val'].isnull()

df_1.loc[m, 'val'] = range(1, m.sum() + 1)
df_1['val'] = df_1['val'].astype(int)
print (df_1)
   id  val
0   1   40
1   2    1
2   3    2
3   4   30
4   5    3

推荐阅读