建設

2017-10-28 43 views
-1

我有這樣的元組的列表:建設

data = [ 
('abc','Name','Abe','def'), 
('w32','reportedDateTime','20170630172658','4r3'), 
('r43','type','54A','tr4'), 
('t765e','fileDate','06/30/2017','q'), 
('4','assignedCode','333-215239','80'), 

('54','Name','Brenda','re'), 
('ht56','State','Arizona','54g') 
('a','reporteddatetime','20170630172550','4r3'), 

('65ky355','Name','Cathy','67737grr'), 
('65t','type','R59','6yy3h'), 
('k6r43d','zip','94110','yt65'), 
('6589','filedate','08/12/2016','67rr') 

]

我想形成一個表或大熊貓數據幀或可能以如下格式存儲在像mySql這樣的關係數據庫中(除非某些不同的數據庫會更好)。 元組的第一個元素和最後一個元素將被丟棄。 第二個元素用作列標題。 第三個元素將是該列的值。

那麼,結果會是這樣的:

名稱ReportedDateTime類型FILEDATE AssignedCode郵編國家
安倍20170630172658 54A 2017年6月30日333-215239
布倫達20170630172658亞利桑那
凱茜R59 8月12日/ 2016 94110

我不知道如何正確格式化表格,這裏實際上是一個3行(PLUS一個標題行)和7列的表格。
但並不是所有的單元格都有值,例如Zip列將只有第三行的值,即Cathy。同樣,AssignedCode只有第一行Abe纔有值。
有一個DateTime字段,一個日期字段和一個zip字段,我也需要適當地格式化字段。令表/數據庫可排序由日期時間或數據或姓名或DataFrame構造第一類型等

enter image description here

+0

我覺得這可能會幫助我發現他們通過谷歌搜索:https://stackoverflow.com/questions/32342949/create-a-table-from-a-list-of-tuples-in-python- 3 AND https://dev.mysql.com/doc/connector-python/en/connector-python-example-connecting.html – user37421

回答

1

使用,然後通過set_index + unstack重塑,每一行是通過在第二列的Name occurencies計數:

data = [ 
('abc','Name','Abe','def'), 
('w32','reporteddatetime','20170630172658','4r3'), 
('r43','type','54A','tr4'), 
('t765e','filedate','06/30/2017','q'), 
('4','assignedCode','333-215239','80'), 

('54','Name','Brenda','re'), 
('ht56','State','Arizona','54g'), 
('a','reporteddatetime','20170630172550','4r3'), 

('65ky355','Name','Cathy','67737grr'), 
('65t','type','R59','6yy3h'), 
('k6r43d','zip','94110','yt65'), 
('6589','filedate','08/12/2016','67rr') 

] 
df = pd.DataFrame(data, columns = list('abcd')) 

df = df.set_index([(df['b'] == 'Name').cumsum(), 'b'])['c'].unstack().reset_index(drop=True) 
print (df) 
b Name State assignedCode filedate reporteddatetime type zip 
0  Abe  None 333-215239 06/30/2017 20170630172658 54A None 
1 Brenda Arizona   None  None 20170630172550 None None 
2 Cathy  None   None 08/12/2016    None R59 94110 
+0

謝謝。這隻有在'b'列沒有重複條目時才起作用。不幸的是,我的元組列表有重複。 所以,雖然我能夠在重新保留原始結構的同時從元組列表中構造一個數據框,但我陷入的困境是創建後續的數據框/表。 第二個位置帶有'Name'標籤的元組標記該名稱的新記錄的開始。但是同一個名字可以有幾個相關的記錄。記錄的字段(即使是相同的名稱)也可能有所不同。 –

+0

可以,但可以區分開始新行開始嗎?你能創建更接近實際數據的樣本元組嗎? – jezrael