我有一个数据框
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.loc
与 Series.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/