2015-03-15 32 views
5

Một trong các cột trong DataFrame là một mảng. Làm thế nào để tôi làm phẳng nó?Làm phẳng một mảng trong gấu trúc

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] 

Sau khi làm phẳng nó nên là:

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 

tôi dường như unstack có thể giúp tôi nhưng tôi không thể hiểu làm thế nào một cách chính xác.

+0

này có thể liên quan: http://stackoverflow.com/questions/ 15952291/how-to-duplicate-rows-in-pandas-based-on-items-in-a-list – cel

Trả lời

5

Dưới đây là một cách tiếp cận 'one-liner', nơi df là dataframe của bạn:

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'}) 

năng suất:

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 
Các vấn đề liên quan