Добавить случайные значения numpy в фрейм данных Polars, используя столбец в качестве входных данных для numpy.random?Python

Программы на Python
Anonymous
 Добавить случайные значения numpy в фрейм данных Polars, используя столбец в качестве входных данных для numpy.random?

Сообщение Anonymous »

Предположим, у меня есть фрейм данных со столбцом с именемmean, который я хочу использовать в качестве входных данных для генератора случайных чисел. Исходя из R, это относительно легко сделать в конвейере:
library(dplyr)

tibble(alpha = rnorm(1000),
beta = rnorm(1000)) %>%
mutate(mean = alpha + beta) %>%
bind_cols(random_output = rnorm(n = nrow(.), mean = .$mean, sd = 1))
#> # A tibble: 1,000 × 4
#> alpha beta mean random_output
#>
#> 1 0.231 -0.243 -0.0125 0.551
#> 2 0.213 0.647 0.861 0.668
#> 3 0.824 -0.353 0.471 0.852
#> 4 0.665 -0.916 -0.252 -1.81
#> 5 -0.850 0.384 -0.465 -3.90
#> 6 0.721 0.679 1.40 2.54
#> 7 1.46 0.857 2.32 2.14
#> 8 -0.242 -0.431 -0.673 -0.820
#> 9 0.234 0.188 0.422 -0.662
#> 10 -0.494 -2.15 -2.65 -3.01
#> # ℹ 990 more rows

Создано 12 ноября 2023 г. с помощью reprex v2.0.2
В Python я могу создать промежуточный фрейм данных и использовать его в качестве входных данных для np.random.normal(), а затем привязать его к фрейму данных, но это кажется неуклюжим. Есть ли способ добавить столбец random_output как часть конвейера/цепочки?
import polars as pl
import numpy as np

# create a df
df = (
pl.DataFrame(
{
"alpha": np.random.standard_normal(1000),
"beta": np.random.standard_normal(1000)
}
)
.with_columns(
(pl.col("alpha") + pl.col("beta")).alias("mean")
)

)

# create an intermediate object
sim_vals = np.random.normal(df.get_column("mean"))

# bind the simulated values to the original df
(
df.with_columns(random_output = pl.lit(sim_vals))
)
#> shape: (1_000, 4)
┌───────────┬───────────┬───────────┬───────────────┐
│ alpha ┆ beta ┆ mean ┆ random_output │
│ --- ┆ --- ┆ --- ┆ --- │
│ f64 ┆ f64 ┆ f64 ┆ f64 │
╞═══════════╪═══════════╪═══════════╪═══════════════╡
│ -1.380249 ┆ 1.531959 ┆ 0.15171 ┆ 0.938207 │
│ -0.332023 ┆ -0.108255 ┆ -0.440277 ┆ 0.081628 │
│ -0.718319 ┆ -0.612187 ┆ -1.330506 ┆ -1.286229 │
│ 0.22067 ┆ -0.497258 ┆ -0.276588 ┆ 0.908147 │
│ … ┆ … ┆ … ┆ … │
│ 0.299117 ┆ -0.371846 ┆ -0.072729 ┆ 0.592632 │
│ 0.789633 ┆ 0.95712 ┆ 1.746753 ┆ 2.954801 │
│ -0.264415 ┆ -0.761634 ┆ -1.026049 ┆ -1.369753 │
│ 1.893911 ┆ 1.554736 ┆ 3.448647 ┆ 5.192537 │
└───────────┴───────────┴───────────┴───────────────┘


Подробнее здесь: https://stackoverflow.com/questions/774 ... to-numpy-r

Вернуться в «Python»