2017-02-20 10 views
3

Ich arbeite mit einer 1400 x 1400 Korrelationsmatrix mit Pandas/Numpy und mein Ziel ist es, die Zeilen und Spalten, die einen bestimmten Variablennamen verwenden. Jede Zeile und Spalte haben den Namen der Variablen und die Korrelation zwischen diesen beiden Variablen:Entfernen von entsprechenden Zeilen/Spalten in der Matrix mit Python

  abandon abhorrent abominable 
abandon  1.00 0.12  0.10 
abhorrent 0.12 1.00  0.99 
abominable 0.10 0.99  1.00 

Um den Datenrahmen zu einer Matrix konvertiert ich as_matrix verwenden:

datafile = pd.read_csv('data.csv') 
df_matrix = datafile.as_matrix 

Ich habe Probleme zu verstehen, wie zu Erstellen Sie einen neuen Datenrahmen, ohne zum Beispiel die Variable "delay" (dh entfernen Sie sowohl die Spalte als auch die Zeile, die "verlassen" entspricht).

zu beginnen, ich habe versucht, versucht, nur eine einzige Spalte auszuwählen ein Verständnis davon, wie ich eine Liste von Variablen erstellen könnte, die ich will:

df_matrix = datafile.as_matrix(columns=['abhorrent']) 

aber das ist nur die Arrays zurückgibt und ich Verliere alle Zeilen-/Spaltennamen.

Ich habe auch versucht, die Zeilen/Spalten nach dem Importieren der Daten zu löschen. Dies würde erfordern, dass ich den zusätzlichen Schritt der Bildung einer Liste der Variablennamen, die ich nicht will, und dann weiterleiten sie als Spalten-/Zeilennummern, aber das scheint machbar. Ich bin dieser Code nicht sicher, aber ganz richtig ist:

df_matrix2 = np.delete(df_matrix, 1, axis=0) 
df_matrix2 = np.delete(df_matrix, 1, axis=1) 

Dieser Code, soweit ich das beurteilen kann, produziert wird keine Änderungen in der neuen Matrix. Es ist immer noch eine 1400x1400 Matrix.

Antwort

2

können Sie DataFrame.drop() Methode verwenden:

In [9]: df 
Out[9]: 
      abandon abhorrent abominable 
abandon  1.00  0.12  0.10 
abhorrent  0.12  1.00  0.99 
abominable  0.10  0.99  1.00 

In [10]: df.drop('abandon', 1).drop('abandon') 
Out[10]: 
      abhorrent abominable 
abhorrent  1.00  0.99 
abominable  0.99  1.00 
1

Hier ist eine mit Zeilen col Indizierung -

In [32]: df 
Out[32]: 
      abandon abhorrent abominable 
abandon  1.00  0.12  0.10 
abhorrent  0.12  1.00  0.99 
abominable  0.10  0.99  1.00 

In [33]: strg = 'abandon' 

In [34]: df.iloc[df.index!=strg, df.columns!=strg] 
Out[34]: 
      abhorrent abominable 
abhorrent  1.00  0.99 
abominable  0.99  1.00 
Verwandte Themen