You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas如何通过映射仅修改列指定值,保留NaN对应的原有值?

解决方案

你可以通过以下两种常用方法实现需求,两种方法均会保留chunkiness为NaN时原chicken列的取值:

方法1:使用fillna补全(最简洁)

map方法对NaN值会返回NaN,你只需要在赋值前用原有chicken列的内容填充这些NaN即可:

mapping_dict = {0.0: "small", 1.0: "meh", 2.0: "big", 3.0: "chunky!"}
im_df["chicken"] = im_df.chunkiness.map(mapping_dict).fillna(im_df["chicken"])

方法2:使用loc筛选仅修改符合条件的行

如果你希望更明确地只处理chunkiness非空的行,避免对其他行做任何改动,可以先做布尔筛选再赋值:

mapping_dict = {0.0: "small", 1.0: "meh", 2.0: "big", 3.0: "chunky!"}
# 筛选chunkiness非空的行
not_null_mask = im_df["chunkiness"].notna()
im_df.loc[not_null_mask, "chicken"] = im_df.loc[not_null_mask, "chunkiness"].map(mapping_dict)

注意:如果chunkiness列存在非NaN但不在mapping_dict键中的值,两种方法都会保留对应行原有的chicken值,如果这不符合你的预期,可以额外加逻辑对无效值做校验处理。

内容的提问来源于stack exchange,提问作者caasswa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 10:36:05