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

Pandas行转列处理:将分类列转为独立列并合并重复值

Pandas 将分类列转为独立列并合并同组多值

你可以通过分组聚合+列转置的方式实现需求,核心是先对col1和col2分组,把同一分组下的col3值用逗号拼接,再将col2的分类转为列:

步骤1:构造示例DataFrame

import pandas as pd

data = [
    ["sally", "grade", "nine"],
    ["joe", "grade", "ten"],
    ["mary", "age", "eight"],
    ["sue", "age", "eight"],
    ["john", "height", "5'9"],
    ["john", "age", "twelve"],
    ["john", "fav_subject", "math"],
    ["john", "fav_subject", "english"]
]

df = pd.DataFrame(data, columns=["col1", "col2", "col3"])

步骤2:分组聚合并转置列

# 分组拼接同分类下的多值
grouped = df.groupby(["col1", "col2"])["col3"].agg(", ".join).unstack()
# 重置索引,将col1转为普通列,空值填充为空字符串
result = grouped.reset_index().fillna("")
# 调整列顺序(与示例格式对齐)
result = result[["col1", "grade", "age", "height", "fav_subject"]]

最终输出结果

col1  grade      age height fav_subject
0    joe    ten                         
1   john        twelve   5'9  math, english
2   mary              eight            
3    sue              eight            
4  sally   nine                         

说明:

  • groupby(["col1", "col2"]).agg(", ".join) 会把同一个col1+col2组合下的所有col3值用逗号连接,比如john的两个fav_subject值会合并为math, english
  • unstack() 把col2的分类从行索引转为列,实现分类转独立列的效果
  • fillna("") 将空值替换为空字符串,与示例的空白格式保持一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 18:21:29