我有一个大型数据集,如下所示:
客户ID | 苹果 | 橙子 | 香蕉 | 菠萝 | 其他物品 |
---|---|---|---|---|---|
CUST_123 | 是的 | 是的 | 没有 | 没有 | 没有 |
CUST_456 | 没有 | 是的 | 没有 | 是的 | 没有 |
CUST_789 | 没有 | 没有 | 没有 | 没有 | 是的 |
我想做的是,采用以下格式:
客户ID | 项目 |
---|---|
CUST_123 | 苹果 |
CUST_123 | 橙子 |
CUST_456 | 橙子 |
CUST_456 | 菠萝 |
CUST_789 | 其他项目 |
知道如何将其转变为这样吗?数据集相当大,很容易想到 10,000 条记录,并且至少有 10-15 个类别,如表 1 中的类别。我需要表 2 格式。
我已经尝试过这里分享的方法https://stackoverflow.com/questions/28654047/convert-columns-into-rows-with-pandas但我不认为我正确使用了melt,或者它不是正确的方法才能得到想要的结果。我真的很感激这里的一些指导/建议。
代码
out = (df.melt('CUSTOMER ID', var_name='Item')
.query('value == "Yes"')
.drop('value', axis=1))
输出:
CUSTOMER ID Item
0 CUST_123 Apples
3 CUST_123 Oranges
4 CUST_456 Oranges
10 CUST_456 Pineapple
14 CUST_789 Other Items