我有一个购买各种物品的用户的数据框架。我想将该值列表拆分为单独的列,并为购买该项目的用户设置一个二进制标志
输入:
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种产品,这种连接/组合方法效率极低。是否有一个更“熊猫友好”或内置的功能可以做到这一点
您可以用
pd.get_dummies(df.B.explode()).sum(level=0)
替换pd.get_dummies(df['B'].explode()
并加入相关问题 更多 >
编程相关推荐