Comment la somme de pandas par l'index unique en plusieurs colonnes?
J'ai une pandas DataFrame qui détaille les activités en ligne en termes de "clics" au cours d'une session utilisateur. Il y a 50 000 utilisateurs uniques, et le dataframe a environ 1,5 millions d'échantillons. Évidemment, la plupart des utilisateurs ont de multiples dossiers.
Les quatre colonnes sont un id utilisateur unique, la date à laquelle l'utilisateur a commencé le service "Inscription", la date à laquelle l'utilisateur a utilisé le service "Session", le nombre total de clics.
L'organisation de la dataframe est comme suit:
User_ID Registration Session clicks
2349876 2012-02-22 2014-04-24 2
1987293 2011-02-01 2013-05-03 1
2234214 2012-07-22 2014-01-22 7
9874452 2010-12-22 2014-08-22 2
...
(Il y a aussi un index ci-dessus à partir de 0, mais on pourrait définir User_ID
que l'index.)
Je voudrais total le nombre total de clics par l'utilisateur depuis la date d'Enregistrement. Le dataframe (ou les pandas objet de Série) la liste User_ID et "Total_Number_Clicks".
User_ID Total_Clicks
2349876 722
1987293 341
2234214 220
9874452 1405
...
Comment faire dans les pandas? Est-ce fait par .agg()
? Chaque User_ID
doit être résumées individuellement.
Comme il y a 1,5 millions de disques, est ce que cette échelle?
OriginalL'auteur ShanZhengYang | 2016-02-10
Vous devez vous connecter pour publier un commentaire.
IIUC vous pouvez utiliser
groupe
,somme
etreset_index
:Si la première colonne
User_ID
estindex
:Ou:
EDIT:
Comme Alexander pointu, vous avez besoin de filtrer les données avant
groupby
, siSession
les dates, c'est le moins queRegistration
dates parUser_ID
:J'ai changer 3. ligne de données pour une meilleure échantillon:
OriginalL'auteur jezrael
La première chose à faire, c'est de filtrer les enregistrements des dates qui précèdent la date de l'enregistrement, puis de les regrouper sur le User_ID et de la somme.
Pour le cas d'utilisation que vous avez mentionné, je crois que c'est évolutive. Il toujours en fonction, bien sûr, sur votre mémoire disponible.
Session
date est moins queRegistration
date? Je pense que non logique. Mais peut-être que je me trompe...Dépend de la configuration. Si pas, il n'y a pas besoin de filtre.
Dans les quatre lignes de données de l'échantillon, la session dépasse toujours la Date d'Enregistrement. Je suppose que les deux dates ont été donnés pour une raison. Si la Date de la Séance est toujours égale ou supérieure à la date de l'enregistrement, les deux dates sont complètement hors de propos à ce problème, comme on aurait pu simplement la somme des clics par ID d'utilisateur.
Oui, vous avez raison. Btw, vous pouvez supprimer votre premier support de
(
Merci pour le commentaire, mais j'ai été réellement en manque un bracket final. Ils sont nécessaires pour le multi-ligne consolidés.
OriginalL'auteur Alexander
supposons que votre dataframe nom est df, puis effectuez les opérations suivantes
OriginalL'auteur Kaushal Kumar Singh