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

如何在Polars中获取每行最大值对应的列名?

Polars中获取每行最大值对应列名(对应Pandas idxmax(axis=1))

在Polars中,我们可以通过pl.max_horizontal快速获取指定列集合中每行的最大值,对应Pandas里的df[["a", "b"]].max(axis=1),示例代码与输出如下:

import polars as pl

df = pl.DataFrame(
    {
        "a": [1, 8, 3],
        "b": [4, 5, None],
    }
)

# 获取每行水平最大值
result_max = df.with_columns(max = pl.max_horizontal("a", "b"))
print(result_max)

输出:

┌─────┬──────┬─────┐
│ a   ┆ b    ┆ max │
│ --- ┆ ---  ┆ --- │
│ i64 ┆ i64  ┆ i64 │
╞═════╪══════╪═════╡
│ 1   ┆ 4    ┆ 4   │
│ 8   ┆ 5    ┆ 8   │
│ 3   ┆ null ┆ 3   │
└─────┴──────┴─────┘

如果需要获取最大值对应的列名(对应Pandas的df[["a", "b"]].idxmax(axis=1)),可以直接使用Polars的pl.arg_max_horizontal函数,它会返回每行最大值所在的列名,自动忽略null值:

# 获取每行最大值对应的列名
result_idxmax = df.with_columns(max_col = pl.arg_max_horizontal("a", "b"))
print(result_idxmax)

预期输出:

┌─────┬──────┬─────────┐
│ a   ┆ b    ┆ max_col │
│ --- ┆ ---  ┆ ---     │
│ i64 ┆ i64  ┆ str     │
╞═════╪══════╪═════════╡
│ 1   ┆ 4    ┆ b       │
│ 8   ┆ 5    ┆ a       │
│ 3   ┆ null ┆ a       │
└─────┴──────┴─────────┘

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 10:50:00