2017-02-21 1 views
1

Ich habe eine Pandas Datenrahmen ‚df‘ der Form 2000x50, die als erscheint:Ändern Datenrahmen zu Indexwert Paar

 Col1  Col2 Col3 
row1 0.046878 0.298156 0.743520 
row2 0.442526 0.881977 0.885514 
row3 0.075382 0.622636 0.706607 

Zeilen und Spalten nicht über eine konsistente Namensgebung in meinem realen Szenario haben.

Ich will als einen Datenrahmen mit Multi-Index erstellen:

(row1, col1), 0.046878 
(row3, col2), 0.622636, etc 

Gibt es eine prägnante Art und Weise diese andere zu tun, als Spaltennamen und Indizes zu extrahieren, bilden cartisian Produkt Indizes wie (row1 zu erstellen , col1) usw. und glätten die in 'df' gespeicherten Werte.

Antwort

2

Verwenden stack für Series und dann to_frame für DataFrame:

df = df.stack().to_frame('col') 
print (df) 
       col 
row1 Col1 0.046878 
    Col2 0.298156 
    Col3 0.743520 
row2 Col1 0.442526 
    Col2 0.881977 
    Col3 0.885514 
row3 Col1 0.075382 
    Col2 0.622636 
    Col3 0.706607 

Und dann sample:

df = df.stack().to_frame('col').sample(n=3) 
print (df) 
       col 
row1 Col2 0.298156 
row3 Col1 0.075382 
    Col2 0.622636 
+0

Wie extrahieren ich von diesem (row1, col3), (row3, col1), usw. nach dem Zufallsprinzip ? – Zanam

+0

@Zanam Sie sollten sich mit MultiIndexes vertraut machen :) – miradulo

+0

Ich versuche .. OJT .. kann nicht die Syntax richtig – Zanam

Verwandte Themen