2017-05-16 24 views
1

ich die folgende Struktur haben, aber viel größer1 Line Dataframe, wo Spalten und Indexwerte verkettet sind

1y 2y 3y 
1w 2 8 40 
2w 3 10 50 
1m 4 12 60 

Was für eine gute schnelle Art und Weise in Python zu wandeln es in einer einzigen Zeile Datenrahmen:

  1w/1y 1w/2y 1w/3y 2w/1y 2w/2y 2w/3y 1m/1y 1m/2y 1m/3y 
NewIndex 2  8  40  3  10 50  4  12 60 

Der neue Index wird schließlich Termine, weil ich die folgenden Daten in einem separaten CSVs für jedes Datum gespeichert haben, und ich will es auf einen einzelnen Datenrahmen konvertieren einige Statistiken auf, um sie auszuführen.

Vielen Dank
Here's the image as the text got misaligned.https://i.stack.imgur.com/K3s7V.png

Antwort

0
In [16]: x = df.stack() 

In [17]: x 
Out[17]: 
1w 1y  2 
    2y  8 
    3y 40 
2w 1y  3 
    2y 10 
    3y 50 
1m 1y  4 
    2y 12 
    3y 60 
dtype: int64 

In [18]: new = pd.DataFrame(x.values, index=x.index.map('/'.join)).T 

In [19]: new 
Out[19]: 
    1w/1y 1w/2y 1w/3y 2w/1y 2w/2y 2w/3y 1m/1y 1m/2y 1m/3y 
0  2  8  40  3  10  50  4  12  60 

oder besser ohne Umsetzung:

In [30]: new = pd.DataFrame(x.values[None, :], columns=x.index.map('/'.join), index=[0]) 

In [31]: new 
Out[31]: 
    1w/1y 1w/2y 1w/3y 2w/1y 2w/2y 2w/3y 1m/1y 1m/2y 1m/3y 
0  2  8  40  3  10  50  4  12  60 
+0

Genau das, was ich brauchte! Vielen Dank! – toniggg

+0

@toniggg, froh, dass ich helfen konnte :) Bitte beachten Sie [akzeptieren] (http://meta.stackexchange.com/a/5235)/eine Antwort aufhebend, wenn es hilfreich war - es wird auch anzeigen, dass Ihre Frage beantwortet wurde. – MaxU

Verwandte Themen