2017-11-04 1 views
1

Ich habe Probleme bei der Analyse der Herkunft-Ziel-Werte in einem Pandas-Datenframe, die Herkunft/Ziel-Spalten und eine Zählspalte der Häufigkeit von enthält diese. Ich möchte dies in einen Datenrahmen mit dem zu zählen, wie viele verlassen und der Eingabe verwandeln:Erstellen Sie einen neuen Datenrahmen durch aggregieren wiederholten Ursprungs-und Zielwerte durch eine separate Zählungsspalte in einem Pandas Datafame

Initial:

Origin Destination Count 

    A  B   7 
    A  C   1 
    B  A   1 
    B  C   4 
    C  A   3 
    C  B   10 

Zum Beispiel dieses vereinfachte Datenrahmen 7 von A verlassen nach B und 1 von A bis C hat also würde A insgesamt 8 sein, und Platz A wäre 4 (B - A ist 1, C - A ist 3) usw. Der neue Datenrahmen würde ungefähr so ​​aussehen.

Ziel:

Place Entering Leaving 

    A  4   8 
    B  17  5 
    C  5   13 

Ich habe mehrere Techniken versucht, wie .groupby(), aber noch nicht meine beabsichtigte Datenrahmen erstellt. Wie kann ich die wiederholten Werte in den Ursprungs-/Zielspalten behandeln und sie einem neuen Datenrahmen mit aggregierten Werten nur der Zählung des Verlassens und des Eintragens zuweisen?

Vielen Dank!

Antwort

1

Verwenden Doppel groupby + concat:

a = df.groupby('Destination')['Count'].sum() 
b = df.groupby('Origin')['Count'].sum() 

df = pd.concat([a,b], axis=1, keys=('Entering','Leaving')).rename_axis('Place').reset_index() 
print (df) 
    Place Entering Leaving 
0  A   4  8 
1  B  17  5 
2  C   5  13 
+1

Dual-groupby immer verwendet wird meine Sache zu sein:) – Dark

+0

@Bharath - Danke. – jezrael

+0

Ah so groupby dann ** concat ** ist der Weg zu gehen - vielen Dank! :) –

0

pivot_table dann tun sum

df=pd.pivot_table(df,index='Origin',columns='Destination',values='Count',aggfunc=sum) 
pd.concat([df.sum(0),df.sum(1)],1) 

Out[428]: 
     0  1 
A 4.0 8.0 
B 17.0 5.0 
C 5.0 13.0 
Verwandte Themen