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, englishunstack()把col2的分类从行索引转为列,实现分类转独立列的效果fillna("")将空值替换为空字符串,与示例的空白格式保持一致
内容的提问来源于stack exchange,提问作者youtube
相关产品推荐
相关产品推荐

