Python中如何解决DataFrame对象的AttributeError问题?
解决AttributeError: 'DataFrame' object has no attribute 'concat'错误
错误原因
concat是pandas库的顶级函数(调用方式为pd.concat()),并非DataFrame对象的内置方法。你代码中使用df_new.concat()的调用逻辑错误,直接触发了这个属性不存在的报错。
修复方案
方案1:修正concat调用方式
将循环内的错误调用替换为正确的顶级函数调用,同时添加ignore_index=True避免索引冲突:
# 修改循环拼接的代码段 for each in recommend_restaurant: temp_df = pd.DataFrame(df_percent[['cuisines','Mean Rating', 'cost']][df_percent.index == each].sample()) df_new = pd.concat([df_new, temp_df], ignore_index=True)
方案2:更高效的批量提取写法(推荐)
循环拼接DataFrame效率极低,建议直接通过索引批量提取目标数据,一步生成结果:
# 替换原循环concat的全部代码 # 直接从df_percent中提取指定索引的目标列,无需循环 df_new = df_percent.loc[recommend_restaurant, ['cuisines', 'Mean Rating', 'cost']].copy() # 若原代码中sample()是为了随机取1行,这里因recommend_restaurant是索引列表,直接提取即可满足需求
额外优化建议
- 原代码
drop_duplicates中keep=False会删除所有重复行,若需保留首次出现的重复项,可改为keep='first' - 提取top30索引时,
score_series.iloc[0:31]会包含当前查询的餐厅自身,若不想推荐自身,可调整为iloc[1:31]
内容的提问来源于stack exchange,提问作者Sarthak garg
相关产品推荐
相关产品推荐

