如何转换 Pandas 中的数据,以便我选择的列名称变成行值并且行增加?

问题描述 投票:0回答:1

我有一个大型数据集,如下所示:

客户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,或者它不是正确的方法才能得到想要的结果。我真的很感激这里的一些指导/建议。

python-3.x pandas dataframe jupyter
1个回答
0
投票

代码

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
© www.soinside.com 2019 - 2024. All rights reserved.