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

如何在Polars中实现类似Pandas pd.factorize()的Ordinal encoding?

在Polars中实现与Pandas factorize()等效的序数编码

要在Polars中实现和Pandas pd.factorize() 完全一致的序数编码效果,直接使用Polars内置的 pl.Expr.factorize() 方法即可,它会按值的首次出现顺序生成从0开始的连续整数编码。

实现代码

import polars as pl

df = pl.DataFrame({"a": [5, 8, 10], "b": ["hi", "hello", "hi"]})

# 对目标列执行序数编码,替换原列
encoded_df = df.with_columns(
    pl.col("a").factorize()[0].cast(pl.Int64).alias("a"),
    pl.col("b").factorize()[0].cast(pl.Int64).alias("b")
)

print(encoded_df)

输出结果

┌─────┬─────┐
│ a   ┆ b   │
│ --- ┆ --- │
│ i64 ┆ i64 │
╞═════╪═════╡
│ 0   ┆ 0   │
│ 1   ┆ 1   │
│ 2   ┆ 0   │
└─────┴─────┘

关键说明

  • factorize() 返回一个元组:第一个元素是编码后的列(默认类型为u32,通过.cast(pl.Int64)可转为示例中的i64类型),第二个元素是该列的唯一值集合。
  • 若需保留原始列,只需修改alias为新列名,例如.alias("a_encoded")。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 04:55:17