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

CUSTOMER ID Apples Oranges Bananas Pineapple Other Items
CUST_123 Yes Yes No No No
CUST_456 No Yes No Yes No
CUST_789 No No No No Yes

我想做的是,让它有以下格式:

CUSTOMER ID Item
CUST_123 Apples
CUST_123 Oranges
CUST_456 Oranges
CUST_456 Pineapple
CUST_789 Other Item

你知道我怎么才能把它变成这样吗?数据集是相当大的,认为10,000条记录很容易,至少有10-15个类别的布局如表1所示.我需要在表2的格式.

我已经try 了这里分享的方法https://stackoverflow.com/questions/28654047/convert-columns-into-rows-with-pandas,但我认为我没有正确使用熔化,或者这不是正确的方式来获得想要的结果.如果能给我一些指导/建议,我将不胜感激.

推荐答案

Code

使用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

Example Code

import pandas as pd
data1 = {'CUSTOMER ID': ['CUST_123', 'CUST_456', 'CUST_789'], 
         'Apples': ['Yes', 'No', 'No'], 'Oranges': ['Yes', 'Yes', 'No'], 
         'Bananas': ['No', 'No', 'No'], 'Pineapple': ['No', 'Yes', 'No'], 
         'Other Items': ['No', 'No', 'Yes']}
df = pd.DataFrame(data1)

Python-3.x相关问答推荐

使用PANAS根据另两个列表中的值对一个列表中的字符串值进行分组

DuckDB:带有嵌套对象的星形表达式

如何检索与美汤相似的标签中的文本?

如何在输入正确的用户名和密码时添加按钮?

正确的本地react 方式-Django身份验证

在Python代码中包含NAN值时,以两个矩阵计算RMSE

如何使用python将pdf文件的页面合并为单个垂直组合页面

在Python中基于组/ID将两个数据帧进行映射,找出较接近的值

DataFrame列中如何迭代重复值?

使用 NaN 计算 pct_change 时如何避免 bfill 或 ffill

如果原始字符串包含正斜杠,如何返回具有不同可能性的新字符串

Dask worker post-processing

内部如何使用 Python 语法?

创建日志(log)文件

在计算之前删除包含某些值的组合

用于 Django 应用程序的 Cython:它会工作吗?

创建集合的 Python 性能比较 - set() 与 {} 文字

如何使用 python 库连接到 poloniex.com websocket api

具有不均匀间隙的 Python 范围

finally 总是在 try 块返回之前运行,那么为什么 finally 块中的更新不会影响 try 块返回的变量的值呢?