使用Pandas的append方法报错:'DataFrame'对象无append属性
解决DataFrame.append()属性错误问题
错误原因
Pandas 2.0及后续版本已正式移除DataFrame.append()方法,这是该方法被废弃后出现的标准报错。
修复代码
循环中反复调用append不仅会触发报错,还存在效率低下的问题。推荐改用列表存储临时DataFrame,最后一次性合并的方案,修改后的代码如下:
import requests import pandas as pd # 初始化空列表用于存储每页的临时数据框 df_collection = [] for i in range(1, 429): # 发起API请求 response = requests.get('https://api.themoviedb.org/3/movie/top_rated?api_key=<api_key>&language=en-US&page={}'.format(i)) # 提取指定字段生成临时数据框 temp_df = pd.DataFrame(response.json()['results'])[['id', 'title', 'overview', 'release_date', 'vote_average', 'vote_count']] # 将临时数据框加入列表 df_collection.append(temp_df) # 一次性合并所有数据框 df = pd.concat(df_collection, ignore_index=True)
优化建议
- 替换API密钥:务必将代码中的
<api_key>替换为你自己的TMDB有效密钥 - 添加异常处理:避免API请求失败导致程序中断,示例如下:
for i in range(1, 429): try: response = requests.get('https://api.themoviedb.org/3/movie/top_rated?api_key=<api_key>&language=en-US&page={}'.format(i)) response.raise_for_status() # 捕获HTTP请求错误 temp_df = pd.DataFrame(response.json()['results'])[['id', 'title', 'overview', 'release_date', 'vote_average', 'vote_count']] df_collection.append(temp_df) except Exception as err: print(f"第{i}页数据获取失败: {str(err)}")
- 效率对比:列表存储+
pd.concat的方式避免了循环中反复创建新DataFrame的开销,比原方案速度更快、内存占用更低
内容的提问来源于stack exchange,提问作者Titanium Gopal
相关产品推荐
相关产品推荐

