在极坐标数据框中切片多个块

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

考虑以下数据框:

df = pl.DataFrame(data={"col1": range(10)})

┌──────┐
│ col1 │
│ ---  │
│ i64  │
╞══════╡
│ 0    │
│ 1    │
│ 2    │
│ 3    │
│ 4    │
│ 5    │
│ 6    │
│ 7    │
│ 8    │
│ 9    │
└──────┘

假设我有一个元组列表,其中第一个值表示起始索引,第二个值表示长度值(如

pl.DataFrame.slice
中所使用)。这可能看起来像这样:

slices = [(1,2), (5,3)]

现在,从

df
中切片/提取两个块的好方法是什么,其中第一个切片从第 1 行开始,长度为 2,而第二个块从第 5 行开始,长度为 3。

这就是我正在寻找的:

┌──────┐
│ col1 │
│ ---  │
│ i64  │
╞══════╡
│ 1    │
│ 2    │
│ 5    │
│ 6    │
│ 7    │
└──────┘
slice python-polars
2个回答
1
投票

您可以使用

pl.DataFrame.slice
分别获取每个切片,然后使用
pl.concat
连接所有切片。

pl.concat(df.slice(*slice) for slice in slices)
shape: (5, 1)
┌──────┐
│ col1 │
│ ---  │
│ i64  │
╞══════╡
│ 1    │
│ 2    │
│ 5    │
│ 6    │
│ 7    │
└──────┘

0
投票

一般来说,你可以这样做

pl.concat(
   df.filter(pl.col.col1 >= s[0]).head(s[1]) for s in slices
)

┌──────┐
│ col1 │
│ ---  │
│ i64  │
╞══════╡
│ 1    │
│ 2    │
│ 5    │
│ 6    │
│ 7    │
└──────┘
© www.soinside.com 2019 - 2024. All rights reserved.