如何将长格式数据转为宽格式?Pandas或Altair实现方法
解决方案
一、用Pandas一行代码转成宽格式
如果你的长格式数据包含唯一索引列(如日期、ID)、类别列和数值列,直接用pivot()就能完成转换:
df_wide = df.pivot(index="索引列名", columns="类别列名", values="数值列名").reset_index()
如果存在同一索引+类别组合的重复行,需要用pivot_table()指定聚合函数(比如取均值):
df_wide = df.pivot_table(index="索引列名", columns="类别列名", values="数值列名", aggfunc="mean").reset_index()
二、Altair无需转换,直接支持长格式绘图
其实Altair原生更适配长格式数据,完全不需要转成宽格式就能绘图。比如要绘制多类别折线图,直接把类别列映射到color编码即可:
import altair as alt chart = alt.Chart(df).mark_line().encode( x="索引列名:T", # T表示时间类型,可根据实际数据类型调整 y="数值列名:Q", color="类别列名:N" # N表示标称类型 ) chart.show()
这种方式比宽格式更灵活,新增类别时不需要修改代码,Altair会自动识别并添加对应系列。
内容的提问来源于stack exchange,提问作者elksie5000
相关产品推荐
相关产品推荐

