2017-07-12 1 views
0

Je suis bel et bien perplexe sur ceComment résumer une plage de valeurs dans une colonne basée sur une plage telle que définie par un multiindice

J'ai un dataframe multiindice qui ressemble à ceci

   data 
index1 index2 
0  1  8 
     2  7 
     3  6 
     4  9 
1  1  3 
     2  4 
     3  3 
     4  6 
2  1  5 
     2  5 

.... et ainsi de suite

et j'essaye de sommer une charge de valeurs de la colonne de données pour chaque index1 basé sur une gamme de valeurs d'index2 pour créer une nouvelle trame de données.

à savoir si je devais créer une nouvelle trame de données à partir des valeurs de données qui correspondent aux 2 premières valeurs de index2 par index1 de l'exemple ci-dessus, je voudrais obtenir,

index1 summed_data 
0  15 
1  7 
2  10 

Est-ce que quelqu'un sait comment fais ça?

Répondre

0

Vous n'avez pas besoin de changer le format d'entrée, en utilisant la déclaration suivante:

x = df.groupby(level ='index1').agg({'data': lambda x: x[:2].sum()}).rename(columns = {'data':'summed_data'}) 

ensuite imprimer:

 summed_data 
index1    
0    15 
1     7 
2    10 
+0

Cela a fonctionné! Merci beaucoup. C'est un ralentisseur de plus à faire pour que ces données soient triées. Il semble que j'ai besoin de mieux apprendre à utiliser les fonctions .agg et lambda – Monkone

+0

Malheureusement, je ne peux pas publiquement upvote jusqu'à ce que je frappe 15 rep. 3 questions de plus et j'en aurai assez pour commencer à voter haut et fort^_^ – Monkone

+0

C'est ma faute, ha ha –