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

如何以最简方式将Polars聚合得到的宽表数据转换为适配可视化的长表格式?

如何以最简方式将Polars聚合得到的宽表数据转换为适配可视化的长表格式?

嘿,这个需求太常见啦!不管你是还在Polars的DataFrame阶段,还是已经转成了Pandas格式,都有非常简洁的内置方法完成宽表转长表的操作,完全不用手动拼接数据~

情况1:还在Polars DataFrame阶段(推荐直接用Polars处理)

你一开始用Polars做的聚合,那直接用Polars自带的melt()方法就能一步到位,效率还更高:

# 先修正你聚合代码里的小问题(应该用pl.col而非pd.col)
df_pl = (data.group_by('month_code').agg(
    pl.col('value').mean().alias('avg'),
    pl.col('value').median().alias('med')
).sort('month_code'))

# 一键转成适配可视化的长表
df_pl_long = df_pl.melt(
    id_vars='month_code',  # 保持不变的分组列
    value_vars=['avg', 'med'],  # 需要转成行的统计列
    variable_name='type',  # 新的分类列名称(区分avg和med)
    value_name='value'  # 数值列的名称
)

# 如果需要转成Pandas格式用于绘图
df_ = df_pl_long.to_pandas().rename(columns={'month_code': 'month'})

情况2:已经是Pandas DataFrame

如果已经把数据转成了Pandas的df,那用Pandas的melt()方法同样简单:

# 针对你给出的Pandas df直接转换
df_ = df.melt(
    id_vars='month',
    value_vars=['avg', 'med'],
    var_name='type',
    value_name='value'
)

这样转换后的df_就完全符合你需要的格式啦,直接用你写的绘图代码就能生成折线图,非常省心~

备注:内容来源于stack exchange,提问作者lmocsi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 19:58:12