Considere o seguinte quadro de dados.
df = pl.DataFrame(data={"col1": range(10)})
┌──────┐
│ col1 │
│ --- │
│ i64 │
╞══════╡
│ 0 │
│ 1 │
│ 2 │
│ 3 │
│ 4 │
│ 5 │
│ 6 │
│ 7 │
│ 8 │
│ 9 │
└──────┘
Digamos que eu tenha uma lista de tuplas, onde o primeiro valor representa o índice inicial e o segundo valor um valor de comprimento (conforme usado em pl.DataFrame.slice
). Isso pode ser assim:
slices = [(1,2), (5,3)]
Agora, qual é uma boa maneira de fatiar/extrair dois pedaços de df
, em que a primeira fatia começa na linha 1 e tem comprimento 2, enquanto a segunda parte começa na linha 5 e tem comprimento 3.
Aqui está o que estou procurando:
┌──────┐
│ col1 │
│ --- │
│ i64 │
╞══════╡
│ 1 │
│ 2 │
│ 5 │
│ 6 │
│ 7 │
└──────┘
Você poderia usar
pl.DataFrame.slice
para obter cada fatia separadamente e depois usarpl.concat
para concatenar todas as fatias.Editar. Como uma tentativa de abordagem vetorizada, você poderia primeiro usar a lista de parâmetros de fatia para criar um dataframe de índices (usando
pl.int_ranges
epl.DataFrame.explode
). Posteriormente, este dataframe de índices pode ser usado para fatiar adf
junção with.