Python Pandas将dict作为单元格值而不是扩展为新列

时间:2019-03-14 17:25:02

标签: python pandas

让我说我有以下命令,如下所示:

 {1: {2017: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  2016: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]},
 4: {2017: [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0],
  2016: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}}

我做出的最接近的尝试会将2017年和2016年更改为这样的不同列:

key 2016                                  2017

1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
4 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]  [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0]

我想要的更像是这样:

key value

1   {2017: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],2016: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}}    
4   {2017: [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0],2016: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}

2 个答案:

答案 0 :(得分:0)

您可以使用以下命令:

df = pd.DataFrame(your_dictionary).T.apply(dict,1)

df
>>1    {2016: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 2017: [...
  4    {2016: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 2017: [...

答案 1 :(得分:0)

就目前而言,我可以像这样通过列表理解来实现

pd.DataFrame([{'key':key,'value':value} for key,value in dict_year.items()])

另一个答案将不胜感激,因为我需要比较自从处理非常大的数据以来使用的资源和时间