python - Pandas 系列仅将 NaN 填充到一定限制
问题描述
我有一个数据集“artwork.csv” https://gitlab.com/IEA_ML_LAB/test/-/blob/80713d4823c4778d11468bcaf4a5223f6a160c88/artwork.csv
“年份”列包括 int64 和 NaN。
我想用文本“无日期”替换前 100 个 NaN 值。我尝试了不同的方法,但没有成功。
'year' 列有 1279 个 NaN 值。我想将 1279 中的前 100 个设置为“无日期”
前 100 个 NaN 值:
我尝试以下命令。它们不会产生任何错误,但它们也不会修改系列:
df.loc[df.year.isnull(), 'year'].iloc[:100] = 'no date'
(df.loc[df.year.isnull(), 'year'].iloc[:100]).replace('NaN', 'no date', inplace=True)
(df.loc[df.year.isnull(), 'year'].iloc[:100]).transform(lambda x: 'no date')
提前致谢。
解决方案
fillna
有一个limit
参数可以设置为 100:
df['year'] = df['year'].fillna('no date', limit=100)
无需iloc
事先调用,因为这会生成额外的数据副本。
虽然要注意混合字符串和浮点数可能不是最好的选择,因为它在处理数据时会严重影响性能。
推荐阅读
- python-3.x - 使用 beautifulsoup 从网站上抓取“td”值的问题
- image - Socket.io,服务器上保存的图像未打开
- .net-core - .NET Core SDK 和 TargetFramework 版本之间的区别
- regex - 如果长度 > 最大长度,则删除括号
- python - ImportError:没有名为“utils”的模块
- python - 无法在 docker 中重新创建 Conda 环境
- svg - svg + inkscape + 不需要的裁剪
- r - 编译后R包`libs`目录太大,无法在CRAN上提交
- plot - 在 Mathematica 中使用 Plot3D 绘制 2D 空间 + 时间的函数
- python-3.x - 使用 Python3 在 Flask 中访问数据库时出现未绑定的本地错误