编写ETL脚本运行extract函数报错:'DataFrame'对象无'append'属性
问题解决:'DataFrame' object has no attribute 'append'
错误原因
这个错误是因为Pandas 2.0及后续版本已经移除了DataFrame.append()方法——你之前的脚本能正常运行,是因为当时使用的是Pandas 1.x版本。
解决方案
方案1:改用官方推荐的pd.concat()(优先选择)
pd.concat()是Pandas官方指定的append()替代方法,效率更高,尤其适合批量合并多个DataFrame。修改你的extract函数如下:
import pandas as pd from datetime import datetime import glob def extract_from_csv(file_to_process): dataframe = pd.read_csv(file_to_process) return dataframe def extract(): # 用列表收集所有读取的CSV数据 df_collection = [] for csvfile in glob.glob("*.csv"): df_collection.append(extract_from_csv(csvfile)) # 一次性合并所有DataFrame,重置索引 extracted_data = pd.concat(df_collection, ignore_index=True) # 确保只保留需要的列(避免CSV中多余列干扰) extracted_data = extracted_data[["Term", "Amount"]] return extracted_data
方案2:降级Pandas到1.x版本(应急用,不推荐)
如果暂时不想修改代码,可以降级到支持append()的旧版Pandas:
pip install pandas==1.5.3
注:不推荐长期使用此方案,新版本Pandas修复了大量bug并优化了性能。
额外提示
如果你的CSV文件中存在缺失Term或Amount列的情况,可以在合并后用fillna()处理空值,或者在extract_from_csv读取时指定列:
def extract_from_csv(file_to_process): # 只读取需要的列,避免冗余数据 dataframe = pd.read_csv(file_to_process, usecols=["Term", "Amount"]) return dataframe
内容的提问来源于stack exchange,提问作者Akash Singh
相关产品推荐
相关产品推荐

