2016-06-20 3 views
1

ich einen Datenrahmen dieser Form (nicht die tatsächliche eins):Erstellen eines hierarchischen Index aus einer TSV-Datei (Pandas)

Fruit Banana House-1 15

Fruit Banana House-2 4

Obst Apfel Haus-2 6

Obst Apfel Haus-2 8

Gemüse Brokkoli Haus-3 8

Gemüsesalat Haus-4 12

Gemüsepaprikaschoten Haus-5 3

Vegetable Corn Haus-4 4

Seasoning Olivenöl Haus-6 2

Seasoning Vinegar Haus-7 2

Ich würde gerne wissen, ob es eine Möglichkeit gibt, in Pandas einen Datenrahmen mit einem hierarchischen Index mit diesen zwei Ebenen zu erstellen: Art des Essens, Essen. Und dann jedem einen Ort und einen Betrag zuweisen. Ich kann dies nicht manuell tun, da der tatsächliche Datensatz über 60.000 Zeilen enthält. Ein Weg, an den ich gedacht habe, bestand darin, eine Liste aus der tsv-Datei zu erstellen und sie dann als Index zu verwenden, aber ich stelle mir vor, dass es einen automatischeren Weg gibt. Danke im Voraus!

Antwort

0

Try this:

In [11]: df 
Out[11]: 
     Type  Food  Loc Num 
0  Fruit  Banana House-1 15 
1  Fruit  Banana House-2 4 
2  Fruit  Apple House-2 6 
3  Fruit  Apple House-2 8 
4 Vegetable Broccoli House-3 8 
5 Vegetable Lettuce House-4 12 
6 Vegetable Peppers House-5 3 
7 Vegetable  Corn House-4 4 
8 Seasoning Olive Oil House-6 2 
9 Seasoning Vinegar House-7 2 

In [13]: df = df.set_index(['Type','Food']) 

In [14]: df 
Out[14]: 
         Loc Num 
Type  Food 
Fruit  Banana  House-1 15 
      Banana  House-2 4 
      Apple  House-2 6 
      Apple  House-2 8 
Vegetable Broccoli House-3 8 
      Lettuce House-4 12 
      Peppers House-5 3 
      Corn  House-4 4 
Seasoning Olive Oil House-6 2 
      Vinegar House-7 2 

BTW können Sie es tun "on-the-fly", wenn der TSV Lesen/CSV-Datei:

df = pd.read_csv(filename, sep='\t', header=None, 
       columns=['Type','Food','Loc','Num'], 
       index_col=['Type','Food'])