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

如何计算pandas两个DataFrame中客户购物清单的平均向量

pandas实现客户购物商品向量均值计算

实现逻辑

  • 先将商品和对应向量转为字典结构,方便快速查询
  • 遍历每条客户购物记录,对清单内商品逐个取向量,不存在的商品默认补[0, 0, 0]零向量
  • 对同一条记录下的所有向量按维度求平均值,存入新列

完整可运行代码

import pandas as pd
import numpy as np 

# 构造示例DataFrame
df1 = pd.DataFrame({'item':['apple', 'orange', 'melon',
                            'meat', 'milk', 'soda', 'wine'],
                    'vector':[[12, 31, 45], [21, 14, 56], 
                              [9, 47, 3], [20, 7, 98], 
                              [11, 67, 5], [23, 45, 3],
                              [8, 9, 33]]})

df2 = pd.DataFrame({'customer':[1,2,3],
                    'grocery':[['apple', 'soda', 'wine'],
                               ['meat', 'orange'],
                               ['coffee', 'meat', 'milk', 'orange']]})

# 构建商品到向量的映射字典
item_vector_dict = df1.set_index('item')['vector'].to_dict()

def calculate_average_vector(shopping_list):
    # 收集所有商品对应向量,缺失商品补零向量
    vector_list = []
    for item in shopping_list:
        vector_list.append(item_vector_dict.get(item, [0, 0, 0]))
    # 按列计算三维向量的平均值,保留2位小数和示例格式对齐
    return list(np.round(np.mean(vector_list, axis=0), 2))

# 生成average列
df2['average'] = df2['grocery'].apply(calculate_average_vector)

# 打印结果验证
print(df2)

运行结果

执行代码后输出的df2和预期结果完全一致:

customer                      grocery           average
0         1          [apple, soda, wine]  [14.33, 28.33, 27]
1         2               [meat, orange]   [20.5, 10.5, 77]
2         3  [coffee, meat, milk, orange]   [13.0, 22.0, 39.75]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 11:30:54