2017-10-21 52 views
0

Supposons que j'ai un ensemble de données MNIST de cette manière.Comment obtenir un nombre spécifique de lignes en fonction des valeurs de colonne dans la trame

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

Je suis en train de sélectionner uniquement les lignes dont la colonne [ « étiquette »] == 1 ou 6.

Mais, je veux seulement 500 lignes de chaque colonne [ « étiquette »]

Comment faire?

+0

Peut-être essayer quelque chose comme 'df.loc [df [ 'étiquette '] .iloc [0: 500] .isin ([1,6])] '... –

+0

Voulez-vous dire les 500 premières lignes? Alors df [df.label.isin ([1,6])) [0: 500] fera l'affaire. – skrubber

Répondre

0

Utilisez GroupBy d'abord, puis filer à-dire

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

Vous pouvez les regrouper et sélectionnez le numéro que vous voulez pour chaque valeur:

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