2016-06-05 5 views
1

Ich habe mehrere Datenrahmen, die wie folgt aussieht:Verwenden Sie Werte von bestimmten Zeilen als Spalten Namen

 0 1 2 3 4 5 
Groupe 1 2 3 4 5 6 
1  3 6 8 6 8 9 
2  5 5 2 1 1 0.1 
3  7 2 8 1.9 11 2.1 
4  1 2 1 1.1 2 1 

So sind die Spaltennamen sind [0, 1, 2, 3, 4, 5], aber ich möchte setze die Werte von Groupe row als Spaltennamen, weil es in dem Zusammenhang interessant ist, dass ich die Daten analysiere. Remarque: die Werte von Groupe Zeile könnte sich ändern, so ist es nicht unbedingt 1, 2, 3. So könnte die Lösung nicht so trivial sein wie +1 zu tatsächlichen Spaltennamen hinzuzufügen.

die gewünschte Ausgabe für den Datenrahmen oben gegeben ist:

 1 2 3 4 5 6 
1  3 6 8 6 8 9 
2  5 5 2 1 1 0.1 
3  7 2 8 1.9 11 2.1 
4  1 2 1 1.1 2 1 

So wie kann ich die Spaltennamen für die Werte von einiger Zeile ändern?

Antwort

1

Wenn Reihe Groupe ist in erster Reihe von df, können Sie erste Spaltennamen festlegen, indem erste Reihe von iloc ausgewählt, dann ist es von astype zu int konvertieren, Spaltennamen entfernen und zuletzt erste Reihe von Datenrahmen entfernen mit [1:]:

df.columns = df.iloc[0,:].astype(int) 
df.columns.name= None 
print (df[1:]) 
    1 2 3 4 5 6 
1 3 6 8 6.0 8 9.0 
2 5 5 2 1.0 1 0.1 
3 7 2 8 1.9 11 2.1 
4 1 2 1 1.1 2 1.0 

Eine andere Lösung mit loc und drop, Reihe Groupe in df kann überall sein, nicht nur zuerst:

df.columns = df.loc['Groupe',:].astype(int) 
df.columns.name= None 
df = df.drop('Groupe') 
print (df) 
    1 2 3 4 5 6 
1 3 6 8 6.0 8 9.0 
2 5 5 2 1.0 1 0.1 
3 7 2 8 1.9 11 2.1 
4 1 2 1 1.1 2 1.0 
Verwandte Themen