重新组织数据框中的数据

时间:2015-05-29 07:15:27

标签: python pandas

我的数据格式如下:

data = 
[
  {'data1': [{'sub_data1': 0}, {'sub_data2': 4}, {'sub_data3': 1}, {'sub_data4': -5}]},
  {'data2': [{'sub_data1': 1}, {'sub_data2': 1}, {'sub_data3': 1}, {'sub_data4': 12}]},
  {'data3': [{'sub_data1': 3}, {'sub_data2': 0}, {'sub_data3': 1}, {'sub_data4': 7}]},

]

我应该如何重新组织它,以便在通过

将其保存到hdf时
a = pd.DataFrame(data, columns=map(lambda x: x.name, ['data1', 'data2', 'data3']))
a.to_hdf('my_data.hdf')

我得到了以下格式的数据框:

            data1       data2     data3
_________________________________________
sub_data1   0           1           1
sub_data2   4           1           0
sub_data3   1           1           1
sub_data4   -5          12          7

update1 :按照以下建议给我提供并保存hdf文件并阅读后,我得到的不是我想要的:

       data1                        data2                      data3   
0      {u'sub_data1': 22}           {u'sub_data1': 33}          {u'sub_data1': 44}   
1      {u'sub_data2': 0}            {u'sub_data2': 11}          {u'sub_data2': 44}   
2      {u'sub_data3': 12}           {u'sub_data3': 16}          {u'sub_data3': 19}   
3      {u'sub_data4': 0}            {u'sub_data4': 0}           {u'sub_data4': 0}   

1 个答案:

答案 0 :(得分:1)

如果您将数据转换为字典词典,那么您可以非常轻松地创建DataFrame:

In [25]: data2 = {k: {m: n for i in v for m, n in i.iteritems()} for x in data for k, v in x.iteritems()}

In [26]: data2
Out[26]: 
{'data1': {'sub_data1': 0, 'sub_data2': 4, 'sub_data3': 1, 'sub_data4': -5},
 'data2': {'sub_data1': 1, 'sub_data2': 1, 'sub_data3': 1, 'sub_data4': 12},
 'data3': {'sub_data1': 3, 'sub_data2': 0, 'sub_data3': 1, 'sub_data4': 7}}

In [27]: pd.DataFrame(data2)
Out[27]: 
           data1  data2  data3
sub_data1      0      1      3
sub_data2      4      1      0
sub_data3      1      1      1
sub_data4     -5     12      7