导读:本期聚焦于书生创作的《如何在 Polars 中实现类似 Pandas unstack() 的透视聚合操作》,敬请观看详情。很多从 Pandas 迁移到 Polars 的用户都会困惑,Pandas 里的 unstack 可以把多级索引展开成宽表,但 Polars 并没有直接提供同名函数。实际上 Polars 通过 pivot 方法配合聚合函数就能完成同样的需求。本文介绍如何用 Polars 的 pivot 实现类似 unstack 的行转列效果,包括基础用法、多值聚合以及和 Pandas 写法的对照,帮助你快速把原有 Pandas 代码迁移到 Polars 而不改变数据结果。

在数据分析工作中,我们常常需要将长表转换为宽表,Pandas 用户习惯使用 unstack 完成这类行转列操作。Polars 作为新一代 DataFrame 库,虽然没有 unstack 方法,但借助 pivot 函数同样可以轻松实现等效的透视聚合。

如何在 Polars 中实现类似 Pandas unstack() 的透视聚合操作

为什么 Polars 没有 unstack

Pandas 的 unstack 基于多级索引(MultiIndex)设计,而 Polars 采用列式存储且不支持多级索引结构。Polars 将透视能力统一收敛到 pivot 接口中,通过指定行、列以及聚合方式来达到展开效果。

基础用法对照

假设我们有如下长格式数据,希望把 category 展开为列,按 date 聚合 value:

import polars as pl

df = pl.DataFrame({
    "date": ["2023-01-01", "2023-01-01", "2023-01-02"],
    "category": ["A", "B", "A"],
    "value": [10, 20, 30]
})

# Polars 实现类似 unstack 的透视
wide = df.pivot(
    values="value",
    index="date",
    on="category",
    aggregate_function="sum"
)
print(wide)

对应的 Pandas 代码通常写成:

import pandas as pd

pdf = pd.DataFrame({
    "date": ["2023-01-01", "2023-01-01", "2023-01-02"],
    "category": ["A", "B", "A"],
    "value": [10, 20, 30]
})

pwide = pdf.groupby(["date", "category"]).sum().unstack()
pwide.columns = pwide.columns.droplevel(0)
print(pwide.reset_index())

多值聚合与缺失处理

当同一单元格存在多个值时,aggregate_function 支持传入字典分别聚合。若某些组合缺失,Polars 会自动填充 null,可用 fill_null 处理:

wide_filled = df.pivot(
    values="value",
    index="date",
    on="category",
    aggregate_function="sum"
).fill_null(0)
print(wide_filled)

注意事项

  • pivot 的 index 参数对应 unstack 之前的行索引级别。
  • on 参数对应被展开的索引级别,即生成的新列名来源。
  • 聚合函数必须显式指定,因为 Polars 不会默认求和。

通过上述方式,你完全可以在 Polars 中以 pivot 替代 Pandas 的 unstack,并获得更清晰直观的API体验。

Polarspandas_unstackpivot修改时间:2026-07-28 21:39:17

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。