2016-09-15 21 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