根据行唯一值创建列:如何对数据集执行pivot操作实现表结构转换
实现方法
你要的是典型的长表转宽表操作,pandas有多种方式可以实现:
方法1:直接使用pivot方法(无重复组合时首选,最适配你的需求)
直接指定行索引、列标题来源、填充值字段即可,代码如下:
# 核心代码,df为你的原始数据集 result = df.pivot(index='B', columns='A', values='C') # 若不需要保留列名的标识"A",可额外添加一行代码去掉列名前缀 result.columns.name = None
方法2:pivot_table方法(适合实际数据存在重复的A+B组合场景)
如果你的实际数据中存在同一个A值+B值对应多个C值的情况,可以用pivot_table指定聚合规则:
# aggfunc可根据你的需求替换为'mean'/'max'/'min'等聚合函数 result = pd.pivot_table(df, index='B', columns='A', values='C', aggfunc='sum') result.columns.name = None
方法3:set_index + unstack组合实现
result = df.set_index(['B', 'A'])['C'].unstack('A') result.columns.name = None
以下是完整可运行的测试代码,你可以直接运行验证效果:
import pandas as pd # 构造示例数据集 data = { "A": [22,22,22,22,23,23,23,23,24,24,24,24], "B": [1,2,3,4,1,2,3,4,1,2,3,4], "C": [52,14,11,9,20,15,8,60,45,12,40,52] } df = pd.DataFrame(data) # 转换操作 result = df.pivot(index='B', columns='A', values='C') result.columns.name = None print(result)
运行后输出的结果和你要求的结构完全一致。
内容的提问来源于stack exchange,提问作者spcol
相关产品推荐
相关产品推荐

