Comment puis-je sélectionner une ligne de sélection aléatoire à partir de chaque groupe (colonne nom code>) dans le fichier de données suivant:
Distance Name Time Order
4 31 John 9 1
0 23 Kate 3 0
2 32 Peter 2 0
6 Réponses :
Vous pouvez atteindre cet article en utilisant unique code>
Mélangez le Dataframe: puis déposer des lignes dupliquées: p>
df.drop_duplicates(subset='Name') Distance Name Time Order 1 16 John 5 0 0 23 Kate 3 0 2 32 Peter 2 0 This should help, but this not random choice, it keeps the first
Vous pouvez utiliser un groupby code>
sur nom code> col et appliquer
échantillon code>
Nice :) +1. J'ai juste une pensée. Si nous échantillon code> tout entier et
groupby.head code> tel que ceci
df.sample (df.shape [0]). Groupby ("nom"). Tête (1) code> pour éviter d'utiliser
Appliquer code>. Serait-ce une différence? Je ne me souviens vraiment pas de la théorie du hasard.
@Andyle. Belle suggestion, ce serait un peu plus rapide, également Mykola Zotko a une bonne suggestion si l'on cherche une performance.
hah, j'ai totalement manqué sa solution jusqu'à ce que vous le mentionniez. Je viens de faire valoir son aussi :)
Que diriez-vous d'utiliser aléatoire
comme ça, P >
importer vos données fournies, P> qui ressemble à ceci, p> puis obtenir un nom de colonne aléatoire , p> et ci-dessous a sélectionné "nom", p> bien sûr que j'aurais pu condenser cela à, p>
Vous pouvez mélanger tous les échantillons à l'aide, par exemple, la fonction numpy code>
aléatoire.permutation code>. Puis
groupy code> par
nom code> et prendre n premières lignes de chaque groupe:
df.iloc[np.random.permutation(len(df))].groupby('Name').head(1)