python - 如何用按顺序开始的自然数填充 nan 列?

标签 python python-3.x pandas dataframe numpy

我有一个数据框

      Columns
0     Nan
1     Nan
2     Nan
3     Nan

我想用从 1 开始到其余空列按升序排列的自然数填充此处的所有 Nan 列。

预期输出

       Columns
0       1
1       2
2       3
3       4

有什么建议吗?

df['Columns'] = df['Columns'].fillna(??????????)

最佳答案

如果需要仅替换缺失值,则解决方案使用 DataFrame.locSeries.cumsum ,然后 True 的处理方式类似于 1:

m = df['Columns'].isna()
#nice solution from @Ch3steR, thank you
df.loc[m, 'Columns'] = m.cumsum()
#alternative
#df.loc[m, 'Columns'] = range(1, m.sum() + 1)
print (df)
   Columns
0        1
1        2
2        3
3        4

测试另一个数据:

print (df)
   Columns
0      NaN
1      NaN
2    100.0
3      NaN

m = df['Columns'].isna()
df.loc[m, 'Columns'] = m.cumsum()
print (df)
   Columns
0      1.0
1      2.0
2    100.0
3      3.0

如果需要按范围设置值,从而覆盖原始列值,请使用:

df['Columns'] = range(1, len(df) + 1)
print (df)
   Columns
0        1
1        2
2        3
3        4

关于python - 如何用按顺序开始的自然数填充 nan 列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66545959/

相关文章:

python - 为什么python在time.sleep()之后不打印?

python - 使用来自另一个数据帧的索引创建一个空数据帧

python - 如何使用 pandas 中的条件执行多重分组和转换计数

python - vscode Python 交互中的交互模式

python - 在 Bokeh 中根据 x_range 自动设置 vbar line_width

python - 比较特定列的 70% 的行

python-3.x - 为什么向图像添加高斯噪声会产生白屏?

Python Pandas groupby 多个计数

python - 为什么 matplotlib 标签 'fontsize' 不起作用?

Python/ Selenium - "no such element: Unable to locate element"