2017-03-10 134 views
1

我遇到一个问题:大熊猫拆散列表

import pandas 
data=pandas.DataFrame({'data1':[[('m',2)],[('n',3),('y',4)],[('x',3),('y',5)],[('m',3)]]}, 
     index=[['a','a','c','d'],[1,1,3,4]]) 

这样的数据:

 data1 
a 1 [(m, 2)] 
    1 [(n, 3), (y, 4)] 
c 3 [(x, 3), (y, 5)] 
d 4 [(m, 3)] 

我想要的结果是这样的:

 key value 
a 1 m 2 
    1 n 3 
    1 y 4 
c 3 x 3 
    3 y 5 
d 4 m 3 

THX!

回答

1

您可以使用列表理解为通过创建的元组和df然后通过stack重塑:

df = pd.DataFrame([dict(x) for x in data.data1], index=data.index) 
print (df) 
     m n x y 
a 1 2.0 NaN NaN NaN 
    1 NaN 3.0 NaN 4.0 
c 3 NaN NaN 3.0 5.0 
d 4 3.0 NaN NaN NaN 

df = df.stack().astype(int).reset_index(level=2) 
df.columns = ['key','value'] 
print (df) 
    key value 
a 1 m  2 
    1 n  3 
    1 y  4 
c 3 x  3 
    3 y  5 
d 4 m  3