升级Python pandas后append方法失效问题的解决办法
解决pandas升级后append方法报错的问题
错误原因
pandas 2.0及以上版本已经彻底移除了DataFrame.append()方法,这就是你遇到AttributeError: 'DataFrame' object has no attribute 'append'错误的直接原因。
解决方案
推荐两种替代方式,优先选第二种(效率更高):
方案1:用pd.concat()替代append()
把原代码里的append操作替换成pd.concat(),需要将待添加的字典先转换成单条记录的DataFrame:
import pandas as pd for row in lista_dist: for col in row: if col > 100: a = col else: # 替换append为pd.concat new_row = pd.DataFrame({'Conc': [a], 'Num': [col]}) df_dist = pd.concat([df_dist, new_row], ignore_index=True)
方案2:先收集数据再一次性生成DataFrame(推荐)
循环中频繁拼接DataFrame效率极低,更优的做法是先把所有要添加的行存入列表,最后一次性转为DataFrame再合并:
import pandas as pd # 初始化空列表存数据 rows_to_add = [] a = None # 先初始化a,避免未赋值的情况 for row in lista_dist: for col in row: if col > 100: a = col else: # 把行数据存入列表 rows_to_add.append({'Conc': a, 'Num': col}) # 一次性生成新的DataFrame并合并 new_df = pd.DataFrame(rows_to_add) df_dist = pd.concat([df_dist, new_df], ignore_index=True)
补充说明
- 如果你的
df_dist初始是空的,直接用df_dist = pd.DataFrame(rows_to_add)即可,不需要pd.concat。 - 方案2的效率远高于方案1,尤其是当数据量较大时,能显著减少内存开销和运行时间。
内容的提问来源于stack exchange,提问作者Nilson Roberto da Fonseca
相关产品推荐
相关产品推荐

