You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 16:52:44