如何使用Python实现DataFrame行转列:产品值转列名并标记yes
Python实现客户购买数据行转列方案
使用Pandas库即可快速完成需求,完整可运行代码如下:
import pandas as pd # 1. 构造原始数据(实际使用时可替换为读取本地文件的逻辑,例如pd.read_csv()) raw_data = [ [1, "shirt style A"], [1, "sky wing"], [2, "sky wing"], [3, "shirt style B"], [3, "shirt style D"], [3, "queen couple"], [4, "big cup"], [5, "small pool"], [5, "sky wing"], [5, "shirt style A"] ] df = pd.DataFrame(raw_data, columns=["customerID", "product"]) # 2. 核心转换逻辑 # 新增标记列,购买过的产品标记为yes df["buy_flag"] = "yes" # 行转列,空值填充为空字符串,列名加p_前缀 result = df.pivot( index="customerID", columns="product", values="buy_flag" ).fillna("").add_prefix("p_").reset_index() # 打印验证结果 print(result)
逻辑说明
- 代码输出结果与预期格式完全一致:购买过的产品对应单元格填充
yes,未购买留空,所有产品列自动增加p_前缀 - 若原始数据中存在同一客户多次购买同一产品的情况,可提前对数据按
customerID和product去重,避免pivot报错:df = df.drop_duplicates(["customerID", "product"])
内容的提问来源于stack exchange,提问作者Tawan
相关产品推荐
相关产品推荐

