升级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
相关产品推荐
相关产品推荐

