我有一个如下所示的数据框

    name    item
0   Jack    A
1   Sarah   B
2   Ross    A
3   Sean    C
4   Jack    C
5   Ross    B

我喜欢做的是制作一本字典,将人们与他们相关的产品联系起来。
{Jack: [1, 0, 1], Sarah: [0, 1, 0], Ross:[1, 1, 0], Sean:[0, 0, 1]}

我觉得这应该很容易使用 pandas.groupby 完成

我试过循环遍历数据框,但我有 >1E7 个条目,循环看起来效率不高。

最佳答案

检查 crosstabto_dict

pd.crosstab(df.item,df.name).to_dict('l')
{'Jack': [1, 0, 1], 'Ross': [1, 1, 0], 'Sarah': [0, 1, 0], 'Sean': [0, 0, 1]}

另一个有趣的选择是使用 str.get_dummies :
# if you need counts
df.set_index('item')['name'].str.get_dummies().sum(level=0).to_dict('l')
# if you want to record boolean indicators
df.set_index('item')['name'].str.get_dummies().max(level=0).to_dict('l')
# {'Jack': [1, 0, 1], 'Ross': [1, 1, 0], 'Sarah': [0, 1, 0], 'Sean': [0, 0, 1]}

关于pandas - 读取 pandas.groupby 中的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56677980/

10-11 21:18