Как случайным образом выбрать строки в кадре данных Pandas в зависимости от конкретного условия? - PullRequest
1 голос
/ 07 июня 2019

Предположим, у меня есть кадр данных Pandas, df, который имеет следующую структуру: -

         Column 1      Column 2 ....     Column 100
Row 1    0.233           0.555              0
Row 2    0.231           0.514              2
..
Row 15000    0.232           0.455          3

Column 100 представляет определенный класс, к которому принадлежит каждая строка (может быть от 0-14). Каждая категория / класс имеет 1000 строк, связанных с ним. Для каждой категории (обозначенной целыми числами в Column 100) я хочу выбрать случайным образом только 200 выборок и создать новый фрейм данных df_new, который будет иметь новое измерение 15x200 = 3000 rows. Есть ли хороший способ достичь этого?

1 Ответ

3 голосов
/ 07 июня 2019

Использовать DataFrame.sample для групп - тогда сортируется последний столбец:

np.random.seed(2019)
df = (pd.DataFrame(np.random.randint(15, size=(100000, 100)))
         .rename(columns=lambda x: f'Column {x+1}'))
#print (df.head())


N = 200
df1 = df.groupby('Column 100').apply(lambda x:x.sample(N)).reset_index(drop=True)
#print (df1.head())

print (len(df1))
3000
...