2015-03-15 44 views
5

Jedną z kolumn w DataFrame jest tablica. Jak to spłaszczyć?Spłaszczanie tablicy w pandach

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] 

Po spłaszczeniu powinno być:

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 

wydawało mi unstack może mi pomóc, ale nie mogę zrozumieć, jak dokładnie.

+0

Może to być związane z: http://stackoverflow.com/questions/ 15952291/how-to-duplicate-rows-in-pand-based-on-items-in-a-list – cel

Odpowiedz

5

Tutaj jest jedno podejście 'one-liner', gdzie df to 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'}) 

otrzymując:

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