-1

我发现列表作为一种类型非常有用。不幸的是,它们有据可查 - 如何生成它们,而不是如何访问内容本身:(

例如,我有一个名为 CARS 的列:

CARS
list
[f64]
======
[1,2,3]
[2,3]
[4]
[]

我想准备两个新变量。

  • CARF - 列表中的第一个值
  • CAR2 - 1 - 如果 value=2 在第一位, 2 - 如果 2 在任何地方, 3 - 2 根本不存在

结果应如下所示:

CARF   CAR2
1      2   
2      1
4      3
Null   3
4

1 回答 1

1

您可以使用when -> then -> otherwise表达式和arr命名空间。其中包括用于列表的实用程序。它们被记录在案

这是您的用例的示例:

df = pl.DataFrame({
    "cars": [[1,2,3], [2,3],[4],[]]
})

df.select([
    pl.col("cars").arr.first().alias("cars_first"),
    pl.when(pl.col("cars").arr.first() == 2)
    .then(1)
    .when(pl.col("cars").arr.contains(2))
    .then(2)
    .otherwise(3).alias("cars_literal")
])

输出:

shape: (4, 2)
┌────────────┬──────────────┐
│ cars_first ┆ cars_literal │
│ ---        ┆ ---          │
│ i64        ┆ i32          │
╞════════════╪══════════════╡
│ 1          ┆ 2            │
├╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ 2          ┆ 1            │
├╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ 4          ┆ 3            │
├╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ null       ┆ 3            │
└────────────┴──────────────┘

于 2022-02-04T19:57:53.560 回答