У меня есть фрейм данных с одним столбцом:
df = pl.DataFrame({
'a':[1,2,3,4]
})
shape: (4, 1)
┌─────┐
│ a │
│ --- │
│ i64 │
╞═════╡
│ 1 │
│ 2 │
│ 3 │
│ 4 │
└─────┘
И функция от int до (int, int):
def f(i): return (i*10, i*100)
Я хочу использовать f, чтобы добавить 2 столбца b,c во фрейм данных. В процессе я хочу явно установить тип данных для этих двух столбцов (на самом деле это не целые числа, это может быть структура Polars, массив и т. д.)
Я пробовал:
df.with_columns(pl.col('a').map_elements(f).alias('temp'))
Но в целом заставить это работать не удается, поскольку f возвращает кортеж сложных типов данных.
┌─────┬───────────┐
│ a ┆ temp │
│ --- ┆ --- │
│ i64 ┆ object │
╞═════╪═══════════╡
│ 1 ┆ (10, 100) │
│ 2 ┆ (20, 200) │
│ 3 ┆ (30, 300) │
│ 4 ┆ (40, 400) │
└─────┴───────────┘
Желаемый результат:
shape: (4, 3)
┌─────┬─────┬─────┐
│ a ┆ b ┆ c │
│ --- ┆ --- ┆ --- │
│ i64 ┆ i64 ┆ i64 │
╞═════╪═════╪═════╡
│ 1 ┆ 10 ┆ 100 │
│ 2 ┆ 20 ┆ 200 │
│ 3 ┆ 30 ┆ 300 │
│ 4 ┆ 40 ┆ 400 │
└─────┴─────┴─────┘
Подробнее здесь: https://stackoverflow.com/questions/767 ... a-frame-in