2017-08-30 2 views
1

In der Zeile unten benenne ich die Spalten des pnlsummary-Datenrahmens aus den Spaltennamen von drei Serien (totalheldmw, totalcost und totalsellprofit) und einem Datenrahmen (totalheldprofit)).Umbenennen der Spalte eines Datenrahmens durch Extrahieren aus einer Kombination von Reihen- und Datenrahmenspaltennamen

Die Schwierigkeit, die ich habe, besteht darin, über die Spaltennamen des Datenrahmens zu iterieren. Ich habe die Namen manuell vergeben, wie Sie unten sehen können. Ich nehme an, dass es einen effizienten Weg gibt, über die Spaltennamen des Datenrahmens zu iterieren. Bitte um Rat.

pnlsummary.columns = 
[totalheldmw.name[0],totalcost.name[0],totalsellprofit.name[0], 
totalheldprofit.columns[0],totalheldprofit.columns[1], 
totalheldprofit.columns[2],totalheldprofit.columns[3]] 

Antwort

0

Ich glaube, Sie list von Konstanten erstellen müssen und dann Spalten Name zu list umgewandelt hinzu:

pnlsummary.columns = [totalheldmw.name[0],totalcost.name[0],totalsellprofit.name[0]] + 
         totalheldprofit.columns[0:3].astype(str).tolist() 

Probe:

df = pd.DataFrame({'A':list('abcdef'), 
        'B':[4,5,4,5,5,4], 
        'C':[7,8,9,4,2,3], 
        'D':[1,3,5,7,1,0], 
        'E':[5,3,6,9,2,4], 
        'F':list('aaabbb')}) 

print (df) 
    A B C D E F 
0 a 4 7 1 5 a 
1 b 5 8 3 3 a 
2 c 4 9 5 6 a 
3 d 5 4 7 9 b 
4 e 5 2 1 2 b 
5 f 4 3 0 4 b 

df.columns = ['a','s','d'] + df.columns[0:3].tolist() 
print (df) 
    a s d A B C 
0 a 4 7 1 5 a 
1 b 5 8 3 3 a 
2 c 4 9 5 6 a 
3 d 5 4 7 9 b 
4 e 5 2 1 2 b 
5 f 4 3 0 4 b 
+0

Das Problem, das ich in laufen lasse, ist, dass der Datenrahmen hat Zeitstempel, aber die vorherige Reihe ist eine Zeichenkette. Also müsste ich die Liste in str konvertieren und dann hinzufügen. Was wäre der beste Weg? –

+0

Ich denke, das einfachste ist 'totalheldprofit.columns [0: 3] .astype (str) .tolist()' – jezrael

+0

pnlsummary.columns = [totalheldmw.name [0], gesamtkosten.name [0], totalsellprofit.name [0 ] + totalheldprofit.columns [0: 3] .asype (str) .tolist()] TypeError: Das Objekt 'list' kann nicht implizit in str konvertiert werden. Gedanken? –

Verwandte Themen