2017-02-24 1 views
1

ich eine 5D-Array Prädiktoren mit einer Form von [6,288,37,90,107] genannt habe zu drehen, wo 6 die Anzahl der Variablen ist,
288 ist die Zeitreihe dieser Variablen,
37 ist die k Standorte,
90 ist die j Standorte,
107 ist die ich Standorten.
Ich möchte eine pandas dataframe haben, die Spalten jeder Variable Zeitreihen an jedem Standort k,j,i enthält, so dass natürlich eine Menge Spalten sein wird.
Dann möchte ich irgendwie die Namen für jede Spalte erhalten.
Zum Beispiel die erste Spalte wäre var1_k_j_i = predictors[0,:,0,0,0]
außer im Namen möchte ich eigentlich die k location, j location,
und i location statt k_j_i.
Da es so viele sind, kann ich das nicht mit der Hand machen, also hoffte ich auf einen Vorschlag für die beste Art und Weise, dies in einen Pandas-Datenrahmen zu organisieren und die Namen zu erhalten? Eine Schleife möglicherweise?effizienteste Weg, einen 5D-Array in einen Pandas Datenrahmen

Also in der Zusammenfassung am Ende von diesem möchte ich meine 5D Array von Prädiktoren in eine große Pandas Datenrahmen, wo jede Spalte eine Variable an verschiedenen Orten k, j, i mit den entsprechenden Namen der Variablen und Ort in der Kopfzeile oder ersten Zeile des Datenrahmens.

Antwort

1

Sound wie Sie Spaß haben müssen mit hier umgestalten.

Um den Ort i, j, k zu adressieren ist einfach wie Umformen zu verwenden. Dann bin ich mir nicht sicher, ob du dich noch einmal umformen kannst, um eine 2D-Darstellung von dem zu erhalten, was du brauchst, also schlage ich dir wie folgt eine Schleife vor.

import itertools 
import pandas as pd 

dfs = [] 
new_matrix = matrix.reshape([6,288,37*90*107]) 
for var range(6): 
    iterator = itertools.product(range(37), range(90), range(107)) 
    columns = ['var%i_' % var + '_'.join(map(str, x)) for x in iterator] 
    dfs.append(pd.DataFrame(new_matrix[var])) 

result = pd.concat(dfs) 
+0

Was meinen Sie mit "Feature" im obigen Code? – HM14

+2

Hey, ich denke du hast es herausgefunden. Ich habe alle 'Feature'-Variablen in' var 'umbenannt, aber einen Schlupf durch! Ich habe es gerade geändert. –

Verwandte Themen