You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按用户ID聚合数据集 拆分Color、Food唯一值生成Yes/No新列

数据集行列转换(按用户聚合并生成分类属性列)实现方案

你需要的是将长表按用户唯一ID、Name分组后,对Color、Food两个分类字段做独热编码,最终输出每个用户一行、每个分类值对应一个Yes/No标识列的宽表,以下是两种常用场景的实现方式:

Python Pandas 实现

适合处理本地文件类数据集,支持动态识别所有分类值,不需要手动写死枚举项:

import pandas as pd

# 读入你的数据集,示例中为构造的测试数据,实际使用可替换为 pd.read_csv("你的文件路径")
df = pd.DataFrame([
    [1, 'John', 'Blue', 'Pizza'],
    [1, 'John', 'Red', 'Pizza'],
    [1, 'John', 'Yellow', 'Pizza'],
    [1, 'John', 'Blue', 'Ice Cream'],
    [1, 'John', 'Red', 'Ice Cream'],
    [1, 'John', 'Yellow', 'Ice Cream'],
    [2, 'Kelly', 'Blue', 'Pizza'],
    [2, 'Kelly', 'Red', 'Pizza']
], columns=['ID', 'Name', 'Color', 'Food'])

# 生成独热编码、替换值为Yes/No、按用户主键聚合
result = pd.get_dummies(df, columns=['Color', 'Food'], prefix_sep='_') \
         .replace({True: 'Yes', False: 'No'}) \
         .groupby(['ID', 'Name'], as_index=False) \
         .max()

# 输出结果或者导出为csv
print(result)
# result.to_csv("转换后结果.csv", index=False)

SQL 实现(以MySQL为例)

适合数据存储在数据库中的场景,如果你需要动态生成列不需要硬写枚举值,可以结合数据库的动态SQL语法实现:

SELECT 
  ID,
  Name,
  IF(MAX(Color = 'Blue'), 'Yes', 'No') AS Color_Blue,
  IF(MAX(Color = 'Red'), 'Yes', 'No') AS Color_Red,
  IF(MAX(Color = 'Yellow'), 'Yes', 'No') AS Color_Yellow,
  IF(MAX(Food = 'Pizza'), 'Yes', 'No') AS Food_Pizza,
  IF(MAX(Food = 'Ice Cream'), 'Yes', 'No') AS `Food_Ice Cream`
FROM 你的表名
GROUP BY ID, Name;

内容的提问来源于stack exchange,提问作者manaso12

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 23:24:02