2017-08-29 2 views
0

Angenommen, ich habe einen Datenrahmen alsGruppierung und Multiindexing ein Pandas Datenrahmen

folgt
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 

ein Wörterbuch haben wie folgt:

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

und ich möchte, dass sie und ein multi- haben sollte Index in Form von ["Armee", "Firma"] nur.

Wie gehe ich vor?

+0

Ich glaube, es ist Betrogene , also nur Kommentar - benutze 'df = df.set_index ([" regiment "," company "])' – jezrael

+0

überprüfe auch ['set_index'] (http://pandas.pydata.org/pandas-docs/stable/generated /pandas.DataFrame.set_index.html) – jezrael

+0

@jezrael yeah danke, ich habe meine Fragen bearbeitet, Das ist es, was ich mir vorstellen wollte – anonymous

Antwort

0

Wenn ich das richtig verstanden:

Sie map verwenden können Werte in einem Wörterbuch zu finden (mit Wörterbuch Verständnis Schlüssel/Wert-Paare tauschen, da sie nach hinten):

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 
Verwandte Themen