2016-07-13 10 views
2

Ich brauche einige hilft, eine Struktur zu strukturieren. So habe ich den folgenden Datenrahmen (genannt df): the original dataframePandas machen einen neuen Datenrahmen mit den alten Spaltennamen

ich zu einer Gruppe möge, dass mein Datenrahmen basierend auf Mean_CArea, Mean_CPressure und Mean_Force. Allerdings habe ich folgendes Ergebnis:

wrongresult

Wie Sie die Spaltennamen 0,1,2 sind sehen nicht NATIVE_RH, ANATOMICAL_RH und NON_ANATOMICAL_RH. Gibt es eine Möglichkeit, die richtigen Spaltennamen aus dem ursprünglichen Datenrahmen zu erhalten?

Hier ist mein Code so weit:

def function(self, df): 
    d = dict() 
    for head in df.columns.tolist(): 
     RH, j_mechanics = head 
     if j_mechanics not in d: 
      d[j_mechanics] = df[head] 
     else: 
      d[j_mechanics] = pd.concat([d[j_mechanics],df[head]], axis=1, ignore_index=True) 
    for df_name, df in sorted(d.items()): 
     print(df_name) 
     print(df.head()) 

Vielen Dank im Voraus!

+0

Haben Sie die 'groupby' Funktion überprüft? http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.groupby.html – jbndlr

Antwort

2

IIUC Sie swaplevel mit groupby von Spalten (axis=1) und von der ersten Ebene (level=0) verwenden können:

df = pd.DataFrame({('B', 'a'): {0: 4, 1: 10}, ('B', 'b'): {0: 5, 1: 11}, ('B', 'c'): {0: 6, 1: 12}, ('A', 'a'): {0: 1, 1: 7}, ('A', 'c'): {0: 3, 1: 9}, ('A', 'b'): {0: 2, 1: 8}}) 

print (df) 
    A   B   
    a b c a b c 
0 1 2 3 4 5 6 
1 7 8 9 10 11 12 
df.columns = df.columns.swaplevel(0,1) 

for i, g in df.groupby(level=0, axis=1): 
    print (g) 
    a  
    A B 
0 1 4 
1 7 10 
    b  
    A B 
0 2 5 
1 8 11 
    c  
    A B 
0 3 6 
1 9 12 
+0

Vielen Dank! Genau das suche ich! – arnold

+0

@arnold Wenn Sie diesen Beitrag nützlich fanden, können Sie ihn verbessern. – piRSquared

1

Sie wollen xs

df.xs('Mean_CArea', axis=1, level=1) 

und

df.xs('Mean_CPressure', axis=1, level=1) 
verwenden

und

df.xs('Mean_Force', axis=1, level=1) 
+0

Danke für Ihre Hilfe! Es funktioniert auch! – arnold

+0

@arnold Wenn Sie diesen Beitrag nützlich fanden, können Sie ihn verbessern. – piRSquared