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

如何用Try Except处理DataFrame中单个缺失变量的赋值问题?

处理DataFrame缺失值的变量赋值方案

首先修正你给出的DataFrame创建代码,原代码里的[, 15]是语法错误,需要用None表示缺失值(pandas会识别为NaN),修正后代码如下:

import pandas as pd

data = [['tom', 10], [None, 15], ['juli', 14]]
df = pd.DataFrame(data, columns=['Name', 'Age'])

用Try Except处理任意列的缺失值赋值

你可以编写一个通用的缺失值处理函数,结合Try Except捕获缺失场景,自动返回默认值。这种方法不管缺失值出现在哪一列,都能统一处理:

def handle_missing(val, default="Not available"):
    try:
        # 检查是否为pandas缺失值,或空字符串(如果是文本类型)
        if pd.isna(val) or (isinstance(val, str) and val.strip() == ''):
            raise ValueError("缺失值")
        return val
    except (ValueError, TypeError):
        return default

# 遍历DataFrame每一行,为变量赋值
for idx, row in df.iterrows():
    # 处理Name变量
    name = handle_missing(row['Name'])
    # 处理Age变量(示例其他列的缺失值处理)
    age = handle_missing(row['Age'])
    
    # 这里可以添加变量的后续使用逻辑
    print(f"第{idx+1}行: Name={name}, Age={age}")

直接针对单变量的Try Except处理

如果只需要处理Name列,也可以直接在遍历中用Try Except包裹赋值逻辑:

for idx, row in df.iterrows():
    try:
        name_val = row['Name']
        # 手动触发异常,进入Except块处理缺失值
        if pd.isna(name_val) or (isinstance(name_val, str) and name_val.strip() == ''):
            raise ValueError
    except (ValueError, TypeError):
        name_val = "Not available"
    
    # 输出结果验证
    print(f"第{idx+1}行Name: {name_val}")

说明

  • 用pd.isna()可以覆盖pandas中所有类型的缺失值(NaN、None等),同时额外判断空字符串是为了处理类似['', 15]这种显性空文本的情况。
  • 通用函数handle_missing可以复用在任意列的变量赋值上,不管缺失值出现在哪一列,只需传入对应列的值即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 14:06:20