大熊猫将名单拆开

时间:2017-03-10 07:58:17

标签: python pandas

我遇到了一个问题:

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 个答案:

答案 0 :(得分: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