列表列的 Polars arg_unique

问题描述 投票:0回答:1

如何获取 Polars 数据框中类型列表的列的唯一元素的(第一次出现)索引?我正在寻找类似于

arg_unique
的东西,但仅适用于
pl.Series
,例如在整个列上执行。我需要它在该列下面的每个列表上工作。 给定数据框

df = pl.DataFrame({
    "fruits": [["apple", "banana", "apple", "orange"], ["grape", "apple", "grape"], ["kiwi", "mango", "kiwi"]]
})

我期望输出是

df = pl.DataFrame({
    "fruits": [[0, 1, 3], [0, 1], [0, 1]]
})
python dataframe python-polars
1个回答
0
投票
当当前没有实现特定的

.list.eval() 方法时,

.list.*
 可以用作后备。

df.with_columns(
    pl.col("fruits").list.eval(pl.element().arg_unique()).alias("idxs")
)
shape: (3, 2)
┌────────────────────────────────────────┬───────────┐
│ fruits                                 ┆ idxs      │
│ ---                                    ┆ ---       │
│ list[str]                              ┆ list[u32] │
╞════════════════════════════════════════╪═══════════╡
│ ["apple", "banana", "apple", "orange"] ┆ [0, 1, 3] │
│ ["grape", "apple", "grape"]            ┆ [0, 1]    │
│ ["kiwi", "mango", "kiwi"]              ┆ [0, 1]    │
└────────────────────────────────────────┴───────────┘
© www.soinside.com 2019 - 2024. All rights reserved.