如何对pandas dataframe执行Pivot操作将year转为列并保留val系列标签
Pandas 多字段Pivot转换实现方法
你可以通过以下两种方式实现需求中的数据重塑操作:
方法1:直接调用pivot方法
import pandas as pd # 构造示例DataFrame df = pd.DataFrame({'id': ['A','B','C'], 'year': [2012, 2014, 2016], 'val1': [1,2,3], 'val2': [5,6,7], 'val3': [9,10,11]}) # 执行Pivot转换 result = df.pivot( index='id', # 保留id作为行索引 columns='year', # 将year的取值转为列维度 values=['val1', 'val2', 'val3'] # 指定要保留的数值字段 ) # 调整列层级顺序,将年份放在字段名前,匹配需求结构 result = result.swaplevel(axis=1).sort_index(axis=1) # 若需要将id从索引转为普通列,添加下行代码 result = result.reset_index()
方法2:使用set_index + unstack组合
# 先将id和year设为复合索引,再把year维度展开到列 result = df.set_index(['id', 'year']).unstack('year') # 后续调整列层级的操作和方法1一致 result = result.swaplevel(axis=1).sort_index(axis=1).reset_index()
两种方法最终输出的结构完全一致,列依次为id、2012下的val1/val2/val3、2014下的val1/val2/val3、2016下的val1/val2/val3,和要求的结构匹配。
内容的提问来源于stack exchange,提问作者kms
相关产品推荐
相关产品推荐

