如何直接替换列中的 NaN 值?

时间:2021-02-04 13:04:50

标签: python pandas

我有一个这样的数据框:

article_id          title
NaN                 title_1
NaN                 title_2
NaN                 title_3
'202102011404103'   title_4
'202102011404104'   title_5
NaN                 title_6

首先,我想添加一个条件“如果有 NaN 值,请执行以下操作”(否则什么都不做)。 如果列中有 NaN 值: 我想直接向列中的 NaN 值添加一个增量值,如下所示:

x = 1
df.insert(0, 'article_id', range(x, x + len(df)))

但是我不知道如何将上面的代码直接添加到列article_id,仅添加到NaN值。 我该怎么做?

预期输出:

article_id              title
    1                   title_1
    2                   title_2
    3                   title_3
    '202102011404103'   title_4
    '202102011404104'   title_5
    4                   title_6

1 个答案:

答案 0 :(得分:2)

您可以创建用于比较缺失值的掩码,并通过第一个值的范围与 NaN 的计数为 sum

m = df['article_id'].isna()

x = 1
df.loc[m, 'article_id'] =  range(x, x + m.sum())
print (df)
          article_id    title
0                  1  title_1
1                  2  title_2
2                  3  title_3
3  '202102011404103'  title_4
4  '202102011404104'  title_5
5                  4  title_6