Ce qui suit est une méthode Python pour extraire les enregistrements d'emplacement spécifiés après un regroupement groupby. Elle a une bonne valeur de référence et j'espère qu'elle sera utile à tout le monde. Venez jeter un œil ensemble
Lors de l'analyse et de la modélisation des données, la première chose que nous devons faire est de traiter les données et d'extraire les informations dont nous avons besoin. Ce qui suit présente une certaine utilisation de groupby pour rendre le traitement des données plus pratique.
Lorsque nous utilisons groupby pour extraire des informations, nous trouvons souvent des statistiques (max, min, var, etc.) des échantillons regroupés. Si maintenant nous voulons prendre le deuxième enregistrement et l’avant-dernier enregistrement de l’échantillon groupé, comment devons-nous procéder ? Nous pouvons extraire le premier et le dernier échantillons après les avoir regroupés en premier et en dernier. Mais si l’on souhaite prélever des échantillons à des endroits précis, il n’existe pas de fonction toute faite. Nous devons l'écrire nous-mêmes. Ci-dessous, je vais vous présenter comment implémenter les fonctions ci-dessus.
1) Introduction des données
La table d'action comporte 3 colonnes : userid, actionType et actionTime, qui représentent l'identifiant de l'utilisateur, le type de comportement de l'utilisateur et comportement respectivement. Le format spécifique est le suivant :
2) Opération de regroupement
a = action.groupby('userid') b = action.groupby('userid')['actionTime'] type(a) type(b)
Après le regroupement, nous pouvons voir que les types de données de a et b sont DataFrameGroupBy et SeriesGroupBy
3) Obtenir le numéro Opération
①Deuxième/avant-dernière durée de fonctionnement par différents utilisateurs
action.groupby('userid')['actionTime'].apply(lambda i:i.iloc[1] if len(i)>1 else np.nan) action.groupby('userid')['actionTime'].apply(lambda i:i.iloc[-2] if len(i)>1 else np.nan)
②Différents utilisateurs Le deuxième/ avant-dernier temps de fonctionnement d'un certain comportement
action[action['actionType']==2].groupby('userid')['actionTime'].apply(lambda i:i.iloc[1] if len(i)>1 else np.nan) action[action['actionType']==2].groupby('userid')['actionTime'].apply(lambda i:i.iloc[-2] if len(i)>1 else np.nan)
PS : étant donné que certains utilisateurs ne peuvent avoir qu'un seul enregistrement, le prendre directement peut entraîner erreurs, donc j'utilise if pour porter un jugement en premier.
De cette façon, nous pouvons extraire des échantillons à n'importe quelle position des données groupées.
Recommandations associées :
Méthode Pandas pour obtenir la ligne avec la valeur maximale dans le groupe groupby
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!