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

如何解决股票日收益表中fillna()函数无法将NaN值替换为0的问题?

解决NVDA股票数据中NaN值无法用fillna()替换的问题

我来帮你搞定这个NaN填充的问题!先看你的数据结构——这是一个带多层列索引的DataFrame(上层是Attributes,下层是Symbols),你用fillna()没生效,大概率是这两个原因之一:要么没把填充后的结果赋值回原变量,要么没针对多层索引做精准的填充操作。

可能的原因分析

  • fillna()默认会返回一个新的DataFrame对象,如果你只是执行df.fillna(0)却没把结果存回df,原数据根本不会被修改
  • 多层索引的DataFrame如果不明确范围,可能导致填充逻辑没覆盖到目标列/行

具体解决方案

假设你的DataFrame变量名为df,给你两种实用的解决方法:

方法1:全局填充所有NaN为0(适合确认只有目标行有NaN的情况)

直接对整个DataFrame进行填充,记得把结果赋值回原变量,或者用inplace=True直接修改原数据:

# 方式A:赋值回原变量(推荐,避免意外修改原数据)
df = df.fillna(0)

# 方式B:直接在原数据上修改
df.fillna(0, inplace=True)

方法2:仅针对2021-06-01这一行填充(更精准,避免误填其他潜在NaN)

如果只想处理指定日期的NaN,用loc定位到目标行后再填充:

# 定位到2021-06-01的行,将其中的NaN替换为0
df.loc['2021-06-01'] = df.loc['2021-06-01'].fillna(0)

验证结果

执行完填充操作后,你可以用下面的代码检查目标行是否已经替换成功:

print(df.loc['2021-06-01'])

执行后你会看到2021-06-01那一行的所有字段都变成0啦!

内容的提问来源于stack exchange,提问作者Ricardo Andrés Aguilar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 20:08:09