2017-07-07 57 views
0

我有一個下面的代碼:是否可以在Pandas中創建帶有子標題的數據框?

_tmp = {} 
_tmp['pre'] = { 
    'A2': 10, 
    'B2': 15, 
    'C2': 20 
} 
_tmp['diff'] = { 
    'A1': 10, 
    'B1': 15, 
    'C1': 20 
} 
_tmp['sum'] = { 
    'A': 100, 
    'B': 150, 
    'C': 200 
} 

_dff = pd.DataFrame(data=_tmp.values(), index=_tmp.keys()) 
_dff[['A', 'B', 'C', 'A1', 'B1', 'C1', 'A2', 'B2', 'C2']] 

和結果,我得到的結果如下:

enter image description here

我很感興趣,如果有可能像下面大熊貓建立一個結構:

enter image description here

+0

你需要頭'A1','B1'等嗎? – PYA

+0

是的,我需要3級標題:A,B,C下A1,B1,C1下A2,B2,C2。謝謝 – SpanishBoy

+0

熊貓不這樣做......你希望用這個做什麼?您可以使用3個獨立的數據框並將它們背對背打印。熊貓適用於網格類型的數據,並且您的模型不是網格。 –

回答

2

你真的找什麼在那裏有一個三維結構,數據框不能做到這一點。 (他們僅2D)

這給你留下了幾個選項:

(1)多dataframes(前/比較/總和)。

dfs = {k:pd.DataFrame(v.items()) for k,v in _tmp.items()} 

(2)熊貓Panel,您可以建立這樣的:

pnl = pd.Panel(dfs) 

這是將多項dataframes的方式。

(3)三維numpy的矩陣:

>>> pnl.as_matrix() 
[[['A1' 10] 
    ['C1' 20] 
    ['B1' 15]] 

[['C2' 20] 
    ['A2' 10] 
    ['B2' 15]] 

[['A' 100] 
    ['C' 200] 
    ['B' 150]]] 

你將不得不編寫自定義打印功能來獲得,當然您的確切要求的輸出,但這些將是你能代表你的方式數據。

相關問題