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

如何判断Pandas行中Number列值为空并自定义填充?

解决Excel数据加载与Number列空值填充问题

需求说明

将test.xlsx文件加载到Pandas DataFrame中,遍历每一行数据并转换为类对象,当行中Number列值为空时,填充自定义指定值。

原代码(存在两处问题)

import pandas as pd

df = pd.read_excel(r'test.xlsx')
for row in df.rows:  # 错误:DataFrame没有rows属性,应使用iterrows()或itertuples()
            id = row['Id']
            name = row['Name']
            number = row['Number']

原思路的问题

直接用if row['Number'] == NaN:判断空值是无效的,因为NaN在Python中不等于任何值(包括自身),必须用专门的空值判断方法。

简洁实现方案

方案1:循环内用三元表达式判断(修正遍历方式+空值判断)

import pandas as pd

# 自定义填充值
MY_CUSTOM_NUMBER = 0  # 可替换为你需要的数值

df = pd.read_excel(r'test.xlsx')
# 使用iterrows()遍历行,返回索引和行数据
for idx, row in df.iterrows():
    id = row['Id']
    name = row['Name']
    # 用pd.isna()判断空值,三元表达式简洁赋值
    number = MY_CUSTOM_NUMBER if pd.isna(row['Number']) else row['Number']
    # 这里可以继续将id、name、number转换为类对象的逻辑

方案2:先整列填充空值再遍历(更高效,适合大数据量)

如果数据量较大,先对整个Number列做空值填充再遍历,避免循环内重复判断,效率更高:

import pandas as pd

MY_CUSTOM_NUMBER = 0

df = pd.read_excel(r'test.xlsx')
# 先填充整列的空值
df['Number'] = df['Number'].fillna(MY_CUSTOM_NUMBER)

# 遍历行(用itertuples()比iterrows()更快)
for row in df.itertuples(index=False):
    id = row.Id
    name = row.Name
    number = row.Number
    # 转换为类对象的逻辑

补充说明

  • pd.isna()可以识别所有类型的空值(包括NaN、None等),兼容性更好
  • df.itertuples()比df.iterrows()的遍历效率更高,适合处理大规模数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 02:05:07