Python 将值列表转换为二进制列
我有一个购买各种物品的用户的数据框架。我想将该值列表拆分为单独的列,并为购买该项目的用户设置一个二进制标志 输入: 预期产出: 我一步一步的尝试 这是我的第一步:Python 将值列表转换为二进制列,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个购买各种物品的用户的数据框架。我想将该值列表拆分为单独的列,并为购买该项目的用户设置一个二进制标志 输入: 预期产出: 我一步一步的尝试 这是我的第一步: 0 123 0 456 1 123 2 456 2 789 使用pd.get_dummiesdf['B']进行爆炸: 它在索引df.joinpd.get_dummiesdf['B']上组合在一起。分解: 问题: 现在我只需要分组并合并。然而,由于成百上千万的行和客户购买了100种产品,这种连接/组合方法
0 123
0 456
1 123
2 456
2 789
使用pd.get_dummiesdf['B']进行爆炸:
它在索引df.joinpd.get_dummiesdf['B']上组合在一起。分解:
问题:
现在我只需要分组并合并。然而,由于成百上千万的行和客户购买了100种产品,这种连接/组合方法效率极低。是否有更友好的或内置的函数可以执行此操作?您可以替换pd.get\u dummiesdf['B']。使用pd.get\u dummiesdf.B.explode.sumlevel=0进行分解并加入。您可以替换pd.get\u dummiesdf['B'].pd.get_dummiesdf.B.explode.sumlevel=0并加入。对于性能,您也可以尝试使用MultiLabelBinarizer。对于性能,您也可以尝试使用MultiLabelBinarizer
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
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