2015-03-15 10 views
5

Una delle colonne in DataFrame è una matrice. Come lo appiattisco?Appiattimento di una matrice nei panda

column1 column2 column3 
var1  var11 [1, 2, 3, 4] 
var2  var22 [1, 2, 3, 4, -2, 12] 
var3  var33 [1, 2, 3, 4, 33, 544] 

Dopo appiattimento che dovrebbe essere:

column1 column2 column3 
var1  var11 1 
var1  var11 2 
var1  var11 3 
var1  var11 4 
var2  var22 1 
var2  var22 2 
var2  var22 3 
var2  var22 4 
var2  var22 -2 
...... 
var3  var33 544 

mi sembrava unstack mi potrebbe aiutare, ma non riuscivo a capire come esattamente.

+0

questo potrebbe essere correlato: http://stackoverflow.com/questions/ 15952291/how-to-duplicate-file-in-panda-based-on-elementi-in-a-list – cel

risposta

5

Qui è un approccio 'one-liner', dove è il vostro df dataframe:

import pandas as pd 

df.join(df.column3.apply(pd.Series)).drop('column3', 1).set_index([u'column1', u'column2']).stack().reset_index().drop('level_2', 1).rename(columns={0:'column3'}) 

cedendo:

column1 column2 column3 
0  var1 var11  1 
1  var1 var11  2 
2  var1 var11  3 
3  var1 var11  4 
4  var2 var22  1 
5  var2 var22  2 
6  var2 var22  3 
7  var2 var22  4 
8  var2 var22  -2 
9  var2 var22  12 
10 var3 var33  1 
11 var3 var33  2 
12 var3 var33  3 
13 var3 var33  4 
14 var3 var33  33 
15 var3 var33  544 
Problemi correlati