我是
polars
库的新手,我想找到以下最有效的方法:
我有
DataFrame
df = pl.DataFrame({'col 1': [[1, 2, 3, 4, 5, 6],[11, 12, 13, 14, 15, 16],[21, 22, 23, 24, 25, 26]]})
我想将每个列表更改为连续元素对的列表。例如第一行和第二行的列表将变成
[(1,2),(3,4),(5,6)]
[(11,12),(13,14),(15,16)]
分别。
转换每个列表的方法是使用以下代码
l = [1, 2, 3, 4, 5, 6]
[e for e in zip(l[::2], l[1::2])]
我知道极坐标最适合与表达式 API 配合使用。我可以使用 API 来完成吗?
这是另一种微妙的方法,因为它对连续值进行分组:我们将列表的尺寸从 6x1 更改为 3x2。因此,每行基础系列的
reshape
与 arr.eval
:
df.with_columns(pl.col('col 1').arr.eval(pl.element().reshape((-1, 2))))
shape: (3, 1)
┌────────────────────────────────┐
│ col 1 │
│ --- │
│ list[list[i64]] │
╞════════════════════════════════╡
│ [[1, 2], [3, 4], [5, 6]] │
│ [[11, 12], [13, 14], [15, 16]] │
│ [[21, 22], [23, 24], [25, 26]] │
└────────────────────────────────┘