2017-08-29 1 views
0

Supposons que j'ai une trame de données comme suitRegroupement et Multiindexing une trame de données de pandas géants

In [6]: df.head() 
Out[6]: 
    regiment company  name preTestScore postTestScore 
0 Nighthawks  1st Miller    4    25 
1 Nighthawks  1st Jacobson   24    94 
2 Nighthawks  2nd  Ali   31    57 
3 Nighthawks  2nd Milner    2    62 
4 Dragoons  1st  Cooze    3    70 

J'ai un dictionnaire comme suit:

army = {'Majors' : 'Nighthawks', 'Captains' : 'Dragoons'}

et je veux qu'il et devrait avoir un multi index sous la forme de ["armée", "compagnie"] seulement.

Comment vais-je procéder?

+0

Je crois qu'il est dupe , donc seulement un commentaire - utilisez 'df = df.set_index ([" regiment "," company "])' – jezrael

+0

vérifiez aussi ['set_index'] (http://pandas.pydata.org/pandas-docs/stable/generated /pandas.DataFrame.set_index.html) – jezrael

+0

@jezrael ouais merci, j'ai édité mes questions, c'est ce que j'avais l'intention de demander – anonymous

Répondre

0

Si je comprends bien:

Vous pouvez utiliser map pour trouver des valeurs dans un dictionnaire (en utilisant la compréhension dictionnaire pour échanger des paires clé/valeur car ils sont en arrière):

army = {'Majors': 'Nighthawks', 'Captains': 'Dragoons'} 

df.assign(army=df.regiment.map({k:v for v, k in army.items()})).set_index(['army', 'company'], drop=True) 
        regiment  name preTestScore postTestScore 
army  company             
Majors 1st  Nighthawks Miller    4    25 
     1st  Nighthawks Jacobson   24    94 
     2nd  Nighthawks  Ali   31    57 
     2nd  Nighthawks Milner    2    62 
Captains 1st  Dragoons  Cooze    3    70