如何调用聚合生成的DataFrame变量?解决KeyError: 'quantity'问题
解决KeyError: 'quantity'的方案
错误根源很明确:你在train数据集里调用orders和quantity列,但这两列是在df2里聚合生成的,train里根本没有这两个字段,所以触发了KeyError。
按以下步骤修正:
- 重置df2的索引
你用groupby('prod_name')后,prod_name变成了df2的索引而非普通列,无法直接和train关联,先把它转回列:
df2 = df2.reset_index()
- 将df2的聚合结果合并到train中
假设train数据集包含prod_name字段(用于关联商品),用merge把df2的orders和quantity字段合并进去:
# 用左连接保留train所有数据,未匹配到的商品字段用0填充 train = train.merge(df2, on='prod_name', how='left').fillna(0)
- 重新生成稀疏矩阵
此时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
相关产品推荐
相关产品推荐

