使用DataFrame.map()时如何避免生成NaN值?实战场景答疑
解决pandas中map方法导致非匹配值变为NaN的问题
你当前的问题是:用map()方法时,因为字典只定义了"Shoes"对应的映射值,导致所有"Shirt"对应的Color被替换成NaN,而你希望仅修改"Shoes"的Color为"Blue",同时保留"Shirt"原有的Color值。
下面是两种可行的解决方法:
方法1:用loc直接定位修改(推荐)
直接定位到Item为"Shoes"的行,修改对应的Color列值,这种方式更直观高效,不会影响其他行的数据:
fr1.loc[fr1["Item"] == "Shoes", "Color"] = "Blue"
方法2:map()结合fillna()补全原数据
如果一定要用map(),可以用fillna()把原来的Color值填充到map产生的NaN位置:
x = {"Shoes": "Blue"} fr1["Color"] = fr1["Item"].map(x).fillna(fr1["Color"])
这两种方法都能得到你预期的结果:"Shoes"的Color变为"Blue","Shirt"的Color保留原来的"Red"和"Yellow"。
内容的提问来源于stack exchange,提问作者Josue Medina
相关产品推荐
相关产品推荐

