使用 Polars 列表类型列 - 如何在条件下使用它们?

zen*_*elb 1 list python-polars

我发现列表作为一种类型非常有用。不幸的是,它们有详细记录 - 如何生成它们,但没有记录如何访问内容本身:(

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

CARS
list
[f64]
======
[1,2,3]
[2,3]
[4]
[]
Run Code Online (Sandbox Code Playgroud)

我想准备两个新变量。

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

结果应该是这样的:

CARF   CAR2
1      2   
2      1
4      3
Null   3
Run Code Online (Sandbox Code Playgroud)

rit*_*e46 6

您可以使用由列表实用程序组成的when -> then -> otherwise表达式和命名空间。list

\n

它们记录在这里。

\n

以下是您的用例的示例:

\n
df = pl.DataFrame({\n    "cars": [[1,2,3], [2,3],[4],[]]\n})\n\ndf.select(\n    pl.col("cars").list.first().alias("cars_first"),\n    pl.when(pl.col("cars").list.first() == 2)\n    .then(1)\n    .when(pl.col("cars").list.contains(2))\n    .then(2)\n    .otherwise(3).alias("cars_literal")\n)\n
Run Code Online (Sandbox Code Playgroud)\n

输出:

\n
shape: (4, 2)\n\xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x82 cars_first \xe2\x94\x86 cars_literal \xe2\x94\x82\n\xe2\x94\x82 ---        \xe2\x94\x86 ---          \xe2\x94\x82\n\xe2\x94\x82 i64        \xe2\x94\x86 i32          \xe2\x94\x82\n\xe2\x95\x9e\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xaa\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa1\n\xe2\x94\x82 1          \xe2\x94\x86 2            \xe2\x94\x82\n\xe2\x94\x82 2          \xe2\x94\x86 1            \xe2\x94\x82\n\xe2\x94\x82 4          \xe2\x94\x86 3            \xe2\x94\x82\n\xe2\x94\x82 null       \xe2\x94\x86 3            \xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\n
Run Code Online (Sandbox Code Playgroud)\n