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

使用loc与fillna填充DataFrame指定列空值无效问题求助

问题原因分析

你遇到的问题核心是:loc切片返回的是原DataFrame的副本而非视图,导致fillna(inplace=True)只修改了临时副本,原DataFrame没有变化。

pandas的索引机制中,当对DataFrame进行列切片时,如果切片的列在内存中不是连续存储,或者pandas无法明确判断是否可以返回视图,就会默认返回副本。这时候inplace=True的修改只会作用在这个副本上,原数据不受影响。

可行解决方案
  • 直接赋值替换(最稳妥)
    放弃inplace=True,将填充后的结果直接赋值回原DataFrame的对应列:

    candy.loc[:,'Q6 | 100 Grand Bar':'Q11: DAY'] = candy.loc[:,'Q6 | 100 Grand Bar':'Q11: DAY'].fillna('NO_ANSWER')
    
  • 先提取列名再操作
    先获取目标列的名称列表,再针对这些列进行填充赋值,避免切片返回副本的问题:

    target_cols = candy.loc[:,'Q6 | 100 Grand Bar':'Q11: DAY'].columns
    candy[target_cols] = candy[target_cols].fillna('NO_ANSWER')
    
  • 用fillna指定列填充值
    构造列与填充值的映射字典,直接在原DataFrame上执行填充:

    fill_map = {col: 'NO_ANSWER' for col in candy.loc[:,'Q6 | 100 Grand Bar':'Q11: DAY'].columns}
    candy.fillna(fill_map, inplace=True)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 05:53:18