Как получить определенное количество строк на основе значений столбцов в dataframe

Предположим, что у меня есть набор данных MNIST.

df = pd.read_csv('data/train.csv')
data = df.loc[df['label'].isin([1,6])]

Я пытаюсь выбрать только те строки, чей столбец ['label'] == 1 или 6.

Но я хочу получить только 500 строк из каждого столбца ['label']

Как мне это сделать?

Ответ 1

Сначала используйте groupby, затем filer i.e

ndf= df.groupby('label').head(500)
data = ndf.loc[ndf['label'].isin([1,6])]

Ответ 2

Вы можете сгруппировать их и выбрать номер, который вы хотите для каждого значения:

data = df.loc[df['label'].isin([1,6])].groupby('label').head(500)