2017-07-07 7 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

はい、A、B、Cの次のA1、B1、C1の次のA2、B2、C2の3レベルのヘッダーが必要です。 – SpanishBoy

+0

パンダはそれをしていない...ありがとう、あなたはこれで達成しようとしているものは何ですか? 3つの別々のデータフレームを使用してバックツーバックで印刷することができます。 pandasはグリッド型データ用であり、モデルはグリッドではありません。 –

答えて

2

データフレームではできない3次元構造があります。 (彼らは2Dのみです。)

これは、カップルのオプションであなたを残します:

(1)複数のデータフレーム(前/差分/合計)。

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

(2)あなたはのように構築することができますAパンダPanel:複数のデータフレームをグループ化する方法です

pnl = pd.Panel(dfs) 

(3)3D numpyの行列:

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

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

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

をあなたはもちろん、あなたの正確な要求された出力を得るために、カスタム印刷関数を記述する必要があるとしているが、これらはあなたがあなたを表現することができる方法になりますデータ。

関連する問題