2016-06-23 11 views
1

Ich habe eine Reihe von „unidirektionale“ Airline Daten, etwa wie unten (Zahlen sind nicht sequentiell oder das gleiche für jede Zeile in Ist-Daten):Hinzufügen von Zeilen mit doppelter Indizes in Pandas

origin dest a b c d e f 
BOS JFK  1 2 3 4 5 6 
     DCA  1 2 3 4 5 6 
JFK BOS  1 2 3 4 5 6 
     DCA  1 2 3 4 5 6 
DCA BOS  1 2 3 4 5 6 
     JFK  1 2 3 4 5 6 

Ich mag erhalten die „multidirektionale“ Daten, also so etwas wie unten:

air1 air2 a b c d e f 
BOS JFK  2 4 6 8 10 12 
    DCA  2 4 6 8 10 12 
JFK DCA  2 4 6 8 10 12 

ich habe mit Pivot-Tabellen experimentiert, aber so haben herausgefunden, weit keine remote nützliche Lösungen.

Antwort

0

Sie können Ihre origin und dest Spalten von Zeile sortieren zuerst und dann eine groupby tun, sum da es so aussieht, dass Ihr Ergebnis kümmert sich nicht um die Reihenfolge der origin und dest:

import pandas as pd 

df.reset_index(["origin", "dest"]) 
od = df.loc[:,'origin':'dest'].as_matrix() 
od.sort() 
df[['air1','air2']] = pd.DataFrame(od) 
df.groupby(['air1','air2']).sum() 

      a b c d e f 
air1 air2      
BOS DCA 2 4 6 8 10 12 
    JFK 2 4 6 8 10 12 
DCA JFK 2 4 6 8 10 12 
+0

Das habe ich versucht. Ziemlich viel gearbeitet, musste etwas ändern, weil eine der Variablen merkwürdig wirkte, wenn sie hinzugefügt wurde (in eine Zeichenkette umgewandelt, so dass sie nicht hinzugefügt werden würde und es scheint jetzt gut zu funktionieren). – nocoolsoft

1

ist das was du willst?

In [133]: df.groupby('dest').sum().reset_index() 
Out[133]: 
    dest a b c d e f 
0 BOS 2 4 6 8 10 12 
1 DCA 2 4 6 8 10 12 
2 JFK 2 4 6 8 10 12