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

如何调用聚合生成的DataFrame变量?解决KeyError: 'quantity'问题

解决KeyError: 'quantity'的方案

错误根源很明确:你在train数据集里调用orders和quantity列,但这两列是在df2里聚合生成的,train里根本没有这两个字段,所以触发了KeyError。

按以下步骤修正:

  1. 重置df2的索引
    你用groupby('prod_name')后,prod_name变成了df2的索引而非普通列,无法直接和train关联,先把它转回列:
df2 = df2.reset_index()
  1. 将df2的聚合结果合并到train中
    假设train数据集包含prod_name字段(用于关联商品),用merge把df2的orders和quantity字段合并进去:
# 用左连接保留train所有数据,未匹配到的商品字段用0填充
train = train.merge(df2, on='prod_name', how='left').fillna(0)
  1. 重新生成稀疏矩阵
    此时train里已经包含orders和quantity列,再执行原代码就不会报错:
user_items = sparse.csr_matrix((train['orders'].astype(float),(train['userId'], train['quantity'])))
item_users = sparse.csr_matrix((train['orders'].astype(float),(train['quantity'], train['userId'])))

额外提醒

这里需要注意:quantity是你聚合出的商品总销量,用它作为稀疏矩阵的列索引逻辑上有问题——稀疏矩阵的列应该对应商品唯一标识(如prod_id),而非销量数值。如果你的train里有商品ID类字段,建议替换掉train['quantity'],避免矩阵结构逻辑错误。

内容的提问来源于stack exchange,提问作者Pebri Alkautsar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 19:54:40