将值列表转换为二进制列

2024-04-26 13:31:29 发布

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

我有一个购买各种物品的用户的数据框架。我想将该值列表拆分为单独的列,并为购买该项目的用户设置一个二进制标志

输入:

       A           B
0  James  [123, 456]
1   Mary       [123]
2   John  [456, 789]

预期输出:

       A           B  123  456  789
0  James  [123, 456]    1    1    0
1   Mary       [123]    1    0    0
2   John  [456, 789]    0    1    1

我所尝试的(一步一步)

^{}是我的第一步:

0    123
0    456
1    123
2    456
2    789

使用^{}{}时:

   123  456  789
0    1    0    0
0    0    1    0
1    1    0    0
2    0    1    0
2    0    0    1

Join在索引df.join(pd.get_dummies(df['B'].explode()))上将其合并:

       A           B  123  456  789
0  James  [123, 456]    1    0    0
0  James  [123, 456]    0    1    0
1   Mary       [123]    1    0    0
2   John  [456, 789]    0    1    0
2   John  [456, 789]    0    0    1

问题:

现在我只需要分组并合并。然而,由于成百上千万的行和客户购买了100种产品,这种连接/组合方法效率极低。是否有一个更“熊猫友好”或内置的功能可以做到这一点


Tags: 数据用户目的框架df列表标志二进制