pandas dataframe将两列作为索引,第三列作为值

2024-10-03 02:32:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个熊猫数据帧如下:

User              ASIN             Rating
A23VKINWRY6J92    1476783284       5
A3HC4SRK7B2AXR    1496177029       5
AE12HJWB5ODOD     B00K2GAUC0       4
AL4RYO265J1G      061579615X       3

我想生成一个字典,它有两列'User'和'ASIN'作为键,第三列'Rating'作为值。如下所示:

^{pr2}$

我该怎么做?在


Tags: 数据字典ratinguserpr2asinae12hjwb5ododa3hc4srk7b2axr
3条回答

你的问题不太清楚,但这是你想要的吗?在

>>> D = df.groupby(['User','ASIN'])['Rating'].apply(list).to_dict()
>>> {key[0]:{key[1]:val} for key, val in D.items()}
{('A23VKINWRY6J92', '1476783284'): [5], ('A3HC4SRK7B2AXR', '1496177029'): [5], ('AE12HJWB5ODOD', 'B00K2GAUC0'): [4], ('AL4RYO265J1G', '061579615X'): [3]}

因此,如果将其分配给my_dict,则

^{pr2}$

等等

使用嵌套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()}

请注意,这将映射到列表,因为结果值没有理由是唯一的。在

您可以使用defaultdict

from collections import defaultdict
d = defaultdict(dict)
for _,x in df.iterrows():
    d[x['User']][x['ASIN']] = x['Rating'] 
d=dict(d)
d['A23VKINWRY6J92']['1476783284']
Out[108]: 5

相关问题 更多 >