2015-11-22 12 views
5

Ho un Multiindexed dataframe contenente le variabili esplicative df e un dataframe contenente le variabili di risposta df_Ycompressione di un Multiindex dataframe per la regressione

# Create DataFrame for explanatory variables 
np.arrays = [['foo', 'foo', 'foo', 'bar', 'bar', 'bar'], 
      [1, 2, 3, 1, 2, 3]] 
df = pd.DataFrame(np.random.randn(6,2), 
        index=pd.MultiIndex.from_tuples(zip(*np.arrays)), 
        columns=['X1', 'X2']) 

enter image description here

# Create DataFrame for response variables 
df_Y = pd.DataFrame([1, 2, 3], columns=['Y']) 

enter image description here

io sono in grado per eseguire la regressione sul solo DataFrame a livello singolo con indice foo

df_X = df.ix['foo'] # using only 'foo' 
reg = linear_model.Ridge().fit(df_X, df_Y) 
reg.coef_ 

Problema: Tuttavia, poiché le variabili Y è lo stesso per entrambi i livelli foo e bar, in modo che possiamo avere il doppio dei campioni di regressione se includiamo anche bar.

enter image description here

Qual è il modo migliore per rimodellare/compressione/unstack il dataframe multilivello in modo che possiamo fare uso di tutti i dati per la nostra regressione? Altri livelli possono avere le righe meno che df_Y

Ci scusiamo per la formulazione di confusione, non sono sicuro dei termini corretti/fraseggio

risposta

0

Il primo indice può essere eliminato e quindi un join lavorerà:

df.index = df.index.drop_level() 
df = df.join(df_Y) 
Problemi correlati