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

如何将pandas提取的Excel数据单列中的NaN值替换为0

解决方案

错误原因

你之前执行dfpm10 = df.fillna(0)时,调用fillna方法的对象是读入全表的df变量,所以返回的自然是完成空值替换的全量数据表,而非你需要的单列。

正确写法

直接对你提前单独提取的单列变量调用fillna方法即可,以PM10列为例:

dfpm10 = dfpm10.fillna(0)

如果所有污染物列都需要替换空值为0,依次操作即可:

dfpm10 = dfpm10.fillna(0)
dfpm25 = dfpm25.fillna(0)
dfozon = dfozon.fillna(0)
dfno2 = dfno2.fillna(0)
dfco = dfco.fillna(0)
dfso2 = dfso2.fillna(0)

优化建议

你现有代码重复读取同一份Excel文件8次,会增加不必要的性能损耗,可改为一次性读入全表后再拆分列,同时完成空值替换,和你原有逻辑完全兼容:

import numpy as np   
import pandas as pd   
from IPython.display import display   

%matplotlib inline

pd.options.display.max_rows = 13
pd.set_option('display.max_columns',750)

file_name = 'C:\last_amb_hour_time.xls'
# 仅读取一次全表
df = pd.read_excel(file_name, header=6, index_col=0)
# 拆分单列同时替换空值为0,iloc后用[]包裹列索引可保持DataFrame格式,和原有返回结构一致
dfdate = df.iloc[:, [0]].fillna(0)
dfpm10 = df.iloc[:, [2]].fillna(0)
dfpm25 = df.iloc[:, [4]].fillna(0)
dfozon = df.iloc[:, [6]].fillna(0)
dfno2 = df.iloc[:, [8]].fillna(0)
dfco = df.iloc[:, [10]].fillna(0)
dfso2 = df.iloc[:, [12]].fillna(0)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 03:21:00