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

如何高效转换Polars DataFrame为宽表并还原至原布局?

Polars长表与宽表互转方案

1. 长表转宽表(最优解:pivot方法)

不用纠结group_by系列操作,Polars内置的pivot函数是专门处理长转宽的最优方案,一步到位且效率更高:

wide_df = df.pivot(
    index="R",
    columns="C",
    values="VAL"
)
print(wide_df)

执行后直接得到目标宽表:

┌─────┬─────┬─────┐
│ R   ┆ c1  ┆ c2  │
│ --- ┆ --- ┆ --- │
│ str ┆ i64 ┆ i64 │
╞═════╪═════╪═════╡
│ r1  ┆ 1   ┆ 2   │
│ r2  ┆ 3   ┆ 4   │
│ r3  ┆ 5   ┆ 6   │
└─────┴─────┴─────┘

参数说明:

  • index:指定保留为行标识的列(这里是R)
  • columns:指定要转换为表头的列(这里是C)
  • values:指定填充单元格的数值列(这里是VAL)

2. 宽表还原为长表(melt方法)

用melt函数可以快速把宽表转回原始长表结构:

long_df = wide_df.melt(
    id_vars="R",
    value_vars=["c1", "c2"],
    variable_name="C",
    value_name="VAL"
)
print(long_df)

执行后得到原始长表:

┌─────┬─────┬─────┐
│ R   ┆ C   ┆ VAL │
│ --- ┆ --- ┆ --- │
│ str ┆ str ┆ i64 │
╞═════╪═════╪═════╡
│ r1  ┆ c1  ┆ 1   │
│ r1  ┆ c2  ┆ 2   │
│ r2  ┆ c1  ┆ 3   │
│ r2  ┆ c2  ┆ 4   │
│ r3  ┆ c1  ┆ 5   │
│ r3  ┆ c2  ┆ 6   │
└─────┴─────┴─────┘

参数说明:

  • id_vars:指定保持不变的行标识列(这里是R)
  • value_vars:指定要展开为行的宽表列(这里是c1、c2)
  • variable_name/value_name:指定转换后的列名,和原始表的C、VAL对应

内容的提问来源于stack exchange,提问作者Federico Visconti

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 21:15:54