更改极坐标数据框列的值

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

我是

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 来完成吗?

dataframe python-polars
1个回答
2
投票

这是另一种微妙的方法,因为它对连续值进行分组:我们将列表的尺寸从 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]] │
└────────────────────────────────┘
© www.soinside.com 2019 - 2024. All rights reserved.