Как заполнить n случайных строк после фильтрации в полярахPython

Программы на Python
Anonymous
 Как заполнить n случайных строк после фильтрации в полярах

Сообщение Anonymous »

Я уже несколько часов думаю, как заполнить n строк после фильтрации в полярах с некоторым значением.
Чтобы дать вам пример, я хотел бы выполнить следующую операцию в полярах.
Для примера данных со столбцом a, имеющим 1 и 2, мы хотим создать столбец b, который:
  • Истинно, если 1 в столбце a.
  • Имеет то же количество значений True, что и количество единиц в столбце a для 2 в столбце a. Это своего рода стратификация. Строки, которые получают значение True, должны быть случайными.
  • Остальные строки в b имеют значение False.

Код: Выделить всё

import polars as pl
import numpy as np

df = pl.DataFrame({
'a': [2, 2, 2, 1, 2, 1]
})
df

Код: Выделить всё

shape: (6, 1)
┌─────┐
│ a   │
│ --- │
│ i64 │
╞═════╡
│ 2   │
│ 2   │
│ 2   │
│ 1   │
│ 2   │
│ 1   │
└─────┘
Вот как я могу это сделать в pandas:

Код: Выделить всё

df_pd = df.to_pandas()

n = df_pd.shape[0]
n_1 = df_pd['a'].value_counts()[1]
n_2 = n - n_1

df_pd['b'] = False
df_pd.loc[df_pd['a'] == 1, 'b'] = True

idx = df_pd.loc[df_pd['a'] == 2].index[np.random.choice(n_2, n_1, replace=False)]
df_pd.loc[idx, "b"] = True
df_pd

Код: Выделить всё

   a      b
0  2  False
1  2   True
2  2  False
3  1   True
4  2   True
5  1   True
Любая помощь приветствуется!

Подробнее здесь: https://stackoverflow.com/questions/725 ... -in-polars

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