python - pandas dataframe to_dict 两列作为索引,第三列作为值
问题描述
我有一个熊猫数据框,如下所示:
User ASIN Rating
A23VKINWRY6J92 1476783284 5
A3HC4SRK7B2AXR 1496177029 5
AE12HJWB5ODOD B00K2GAUC0 4
AL4RYO265J1G 061579615X 3
我想生成一个字典,其中有 2 列“用户”和“ASIN”作为键,第三列“评级”作为值。如下所示:
my_dict[A23VKINWRY6J92][1476783284] = 5
my_dict[A3HC4SRK7B2AXR][1496177029] = 5
my_dict[AE12HJWB5ODOD][B00K2GAUC0] = 4
my_dict[AL4RYO265J1G][061579615X] = 3
我怎样才能做到这一点?
解决方案
使用嵌套的 dict 理解:
{u: {a: list(df.Rating[(df.User == u) & (df.ASIN == a)].unique()) for a in df.ASIN[df.User == u].unique()} for u in df.User.unique()}
请注意,这映射到列表,因为结果值没有理由应该是唯一的。
推荐阅读
- encryption - 解密文件时如何正确捕获 gpg 输出?
- azure - 如何在 azure 数据工厂中复制受密码保护的 excel 文件?
- unity3d - 着色器图弄乱了纹理(Unity 2D)
- reactjs - React TypeScript:参数“e”隐含任何类型错误
- javascript - 如何在多个元素上附加单个 onclick
- typescript - 如何在 TypeScript 中将两种类型绑定在一起?
- android - java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“java.lang.String java.lang.String.toLowerCase()”
- python - Pepper Robot 无法正常启动
- socket.io - NestJS 8 Socket.io 4 在服务器端有套接字但未到达
- blazor - Blazor 服务器“找不到路由值指定的回退终结点:{ page: /_Host, area: }。”