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

如何将Pandas DataFrame两列作为嵌套键、第三列作为值转字典

实现Pandas DataFrame转嵌套字典的两种方法

嘿,这个需求其实用Pandas的内置工具就能轻松搞定,我给你分享两种常用的实现方式,你可以根据场景选:

方法1:分组+字典推导(直观易理解)

先按User列分组,每个分组内把ASIN作为键、Rating作为值生成子字典,最后再把User作为外层键整合起来:

import pandas as pd

# 先构造你的示例DataFrame
df = pd.DataFrame({
    'User': ['A23VKINWRY6J92', 'A3HC4SRK7B2AXR', 'AE12HJWB5ODOD', 'AL4RYO265J1G'],
    'ASIN': ['1476783284', '1496177029', 'B00K2GAUC0', '061579615X'],
    'Rating': [5, 5, 4, 3]
})

# 生成嵌套字典
my_dict = {
    user: group.set_index('ASIN')['Rating'].to_dict()
    for user, group in df.groupby('User')
}

验证一下:

print(my_dict['A23VKINWRY6J92']['1476783284'])  # 输出5,完全符合你的需求

方法2:多层索引+unstack(更简洁)

利用Pandas的多层索引特性,一步到位生成嵌套结构:

# 同样基于上面的df
my_dict = df.set_index(['User', 'ASIN'])['Rating'].unstack().to_dict('index')

这个方法的逻辑是:先把User和ASIN设为双层索引,然后unstack把内层的ASIN转成列,最后用to_dict('index')把每行(对应一个User)转成ASIN-Rating的子字典。

注意事项

如果你的DataFrame里存在重复的User+ASIN组合(同一个用户对同一个ASIN打了多次分),建议先去重或者聚合,比如保留最后一条记录:

df = df.drop_duplicates(subset=['User', 'ASIN'], keep='last')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:05:58