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

求助:如何在DataFrame中排除lag列,将其余列的NaN值填充为"Not Available"

解决DataFrame指定列填充NaN的问题

你的问题出在对副本操作而非原DataFrame上!当你用mydataset_df[mydataset_df.columns.difference(['lag'])]或者loc[:, mydataset_df.columns != 'lag']选择列时,pandas返回的是原DataFrame的一个副本,后续的fillna(inplace=True)只会修改这个副本,原DataFrame完全没变化。

这里给你两种简单有效的解决方案:

方案1:直接赋值回原DataFrame的对应列

通过loc选中需要填充的列,将填充后的结果直接赋值回去,确保修改作用在原DataFrame上:

# 方法A:用difference排除lag列
cols_to_fill = mydataset_df.columns.difference(['lag'])
mydataset_df.loc[:, cols_to_fill] = mydataset_df.loc[:, cols_to_fill].fillna("Not Available")

# 方法B:用!=筛选列
cols_to_fill = mydataset_df.columns != 'lag'
mydataset_df.loc[:, cols_to_fill] = mydataset_df.loc[:, cols_to_fill].fillna("Not Available")

方案2:用fillna的subset参数(更简洁)

fillna本身支持subset参数,直接指定要填充的列子集,一步到位:

mydataset_df.fillna(
    value="Not Available",
    subset=mydataset_df.columns.difference(['lag']),
    inplace=True
)

或者用!=的方式生成列列表:

mydataset_df.fillna(
    value="Not Available",
    subset=mydataset_df.columns[mydataset_df.columns != 'lag'],
    inplace=True
)

这样就能完美实现:保留lag列的原样,将其他所有列的NaN值填充为"Not Available"。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 18:27:27