2016-09-15 86 views
2

当我尝试将以下字典转换为数据框时,python会重复每一行两次。Python将字典转换为数据框失败

a = [[[[130.578125, 96, 130.59375, 541], 
     [130.5625, 635, 130.609375, 1055], 
     [130.546875, 657, 130.625, 1917], 
     [130.53125, 707, 130.640625, 1331], 
     [130.515625, 1530, 130.65625, 2104]], 
     [[130.578125, 96, 130.59375, 541], 
     [130.5625, 635, 130.609375, 1055], 
     [130.546875, 657, 130.625, 1917], 
     [130.53125, 707, 130.640625, 1331], 
     [130.515625, 1530, 130.65625, 2104]]], 
    [[[143.34375, 5, 143.359375, 79], 
     [143.328125, 142, 143.375, 129], 
     [143.3125, 132, 143.390625, 137], 
     [143.296875, 126, 143.40625, 118], 
     [143.28125, 113, 143.421875, 125]], 
     [[143.34375, 5, 143.359375, 79], 
     [143.328125, 142, 143.375, 129], 
     [143.3125, 132, 143.390625, 137], 
     [143.296875, 126, 143.40625, 118], 
     [143.28125, 113, 143.421875, 125]]]] 

b = ['Mini','on'] 

c = dict(zip(b,a)) 

d = pd.DataFrame.from_dict(c) 

print d 

Python的打印输出如下:

           Mini \ 
0 [[130.578125, 96, 130.59375, 541], [130.5625, ... 
1 [[130.578125, 96, 130.59375, 541], [130.5625, ... 

                on 
0 [[143.34375, 5, 143.359375, 79], [143.328125, ... 
1 [[143.34375, 5, 143.359375, 79], [143.328125, ... 

所需的输出是:

           Mini \ 
0 [[130.578125, 96, 130.59375, 541], [130.5625, ... 

                on 
0 [[143.34375, 5, 143.359375, 79], [143.328125, ... 

可有人请建议我该怎么解决这个问题?

回答

1

让我们先从一个例子

你得到

pd.DataFrame({'Mini': [1, 1], 'on': [2, 2]}) 

enter image description here

当你想

pd.DataFrame({'Mini': [1], 'on': [2]}) 

enter image description here


您对a的定义是列表形式的2x2x5x4数组。第一个维度被压缩到dict的值。第二个维度是长度为2的列表,我刚刚展示了当你通过这样的字典pd.DataFrame

为了解决这个问题,交换了以下符合你以前的d

d = pd.Series(c).to_frame().T 

定义发生了什么

回应置评
要打印整个单元格内容

with pd.option_context('display.max_colwidth', -1): 
    print d 
+0

谢谢。你知道我怎样才能在原始数据集上显示整行,而没有......(连续符号)的最后一行? – A1122

+0

@ A1122我更新了我的帖子,回答了这个问题。 – piRSquared