我发现列表作为一种类型非常有用。不幸的是,它们有详细记录 - 如何生成它们,但没有记录如何访问内容本身:(
例如,我有一个名为 CARS 的列:
df = pl.DataFrame({'CARS': [[1, 2, 3], [2, 3], [4], []]})
┌───────────┐
│ CARS │
│ --- │
│ list[i64] │
╞═══════════╡
│ [1, 2, 3] │
│ [2, 3] │
│ [4] │
│ [] │
└───────────┘
我想准备两个新变量。
结果应如下所示:
┌──────┬──────┐
│ CARF ┆ CAR2 │
│ --- ┆ --- │
│ i64 ┆ i32 │
╞══════╪══════╡
│ 1 ┆ 2 │
│ 2 ┆ 1 │
│ 4 ┆ 3 │
│ null ┆ 3 │
└──────┴──────┘
您可以使用
when -> then -> otherwise
表达式和 list
命名空间,其中包含列表实用程序。
它们记录在此处。
这是您的用例的示例:
df = pl.DataFrame({
"cars": [[1,2,3], [2,3],[4],[]]
})
df.select(
pl.col("cars").list.first().alias("cars_first"),
pl.when(pl.col("cars").list.first() == 2)
.then(1)
.when(pl.col("cars").list.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 │
└────────────┴──────────────┘