2017-02-09 6 views
2

Ich habe ein Multi-indizierte Datenrahmen wie unten verketten:Mehr indexierten Informationen innerhalb eines Pandas Datenrahmen

 col1 col2 col3 col4 
row1 0 A A b b 
     1 B B c c 
row2 0 A B d d 
     1 B B e e 

und würde die effizienteste Weg, um die Informationen von verketten zum Beispiel wissen, für row1 + col1, row1 + col2 usw., so dass mein Ergebnis wird sein:

   col1 col2 col3 col4 
row1   AB AB bc bc 
row2   AB BB de de 

so weit, die beste/einzige Weg, kann ich sehen, dies zu tun ist:

dx = pd.concat(
    [df[col].unstack().apply(lambda row: row.str.cat(sep=''),axis=1) 
     for col in df.columns], 
    axis=1, 
) 

dx.columns = df.columns 

In der Praxis , dieser spezielle Datenrahmen ist 1,5 m Zeilen mal 1000 Spalten groß, so dass eine effizientere Art der Iteration sehr willkommen ist!

Antwort

2

Strings sum kompatibel ist, so dass dies wird es einfach durch die Gruppierung auf der ersten Ebene des Index machen:

df.groupby(level=0).apply(sum) 
Out[37]: 
    col1 col2 col3 col4 
row1 AB AB bc bc 
row2 AB BB de de 
+0

Dank Boud hatte ich nicht bemerkt, dass etwa 'sum' – blackgore

Verwandte Themen