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

升级Airflow与Pandas后pd.concat报AttributeError求助

Pandas 2.1.1 + Airflow 2.7.2 中 pd.concat 报错 AttributeError 的解决方法

问题根源

升级到Pandas 2.x后,处理包含空结构(如空DataFrame、nullable类型列)的DataFrame列表时,内部NA填充逻辑发生变化,当fill_value被设为None时,会触发'NoneType' object has no attribute '_value'错误,而旧版Pandas 1.x对这种情况的处理更宽松。

具体解决步骤

  • 过滤空DataFrame
    在执行pd.concat前,先移除列表中无数据的空DataFrame,避免触发异常:

    # 过滤空DF
    dfs = [df for df in dfs if not df.empty]
    # 执行拼接
    df = pd.concat(dfs)
    
  • 统一列数据类型
    若列表中DataFrame的列类型不统一(如混用Nullable类型和基础类型),手动将所有列转为基础类型:

    # 遍历所有DF,转换Nullable整数/浮点列为基础类型
    for idx, df in enumerate(dfs):
        # 处理Nullable整数列
        int_cols = df.select_dtypes(include=['Int64']).columns
        dfs[idx][int_cols] = df[int_cols].astype('int64', errors='ignore')
        # 处理Nullable浮点列
        float_cols = df.select_dtypes(include=['Float64']).columns
        dfs[idx][float_cols] = df[float_cols].astype('float64', errors='ignore')
    df = pd.concat(dfs)
    
  • 临时降级Pandas
    若需快速恢复旧版本的运行逻辑,可降级到之前兼容的Pandas版本:

    pip install pandas==1.3.5 --force-reinstall
    
  • 明确拼接参数
    当DataFrame列表列不匹配时,显式指定拼接参数,避免自动填充逻辑出错:

    df = pd.concat(dfs, join='outer', ignore_index=True, sort=False)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 15:07:18