2017-03-23 5 views
0

いくつかのgroupbyおよびピボット操作後、結果のデータフレームはマルチレベルの列とインデックス値で終わります。MultiIndexデータフレームの選択/名前の変更/簡略化

これらの複数値の列を操作する方法の例をいくつか教えてください。 「3-中央値」、「1分」:

>>> result.columns 
MultiIndex(levels=[[u'min', u'median', u'mean', u'max', u'std', u'count'], [1, 2, 3, 4, 5]], 
      labels=[[0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5], [0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4]], 
      names=[None, u'Nums']) 

は道のようなレベルの組み合わせの文字列に列の名前を変更あり:ここで例えば

は、列が今のように見えるものです。

機能のためにMultiIndexを保持する方がいいですか?ラベルの名前を変更するだけですか? レベルの組み合わせ( "1分"、 "3中央値")で列を選択する方法を探したいと思います。

また、データフレームをCSVファイルにエクスポートすると、MultiIndex列の値が2行(1行 "最小"行2 "1")になり、それらを1つにまとめたい。

質問は多少広がっていますが、私はどのようなオプション/機能がこのような結果で機能するかを知りたかったのです。

任意の提案は、あなたがマルチインデックスのレベル値を取得し、それらを一緒に追加するには、配列演算を使用することができます

+0

'results [[(1、 'min')、(3、 'median')]]'トリックを行う必要があります –

答えて

0

を高く評価しました。

result.columns.get_level_values(1).astype(str) + '-' + result.columns.get_level_values(0) 

Index(['1-min', '2-min', '3-min', '4-min', '5-min', '1-median', '2-median', 
     '3-median', '4-median', '5-median', '1-mean', '2-mean', '3-mean', 
     '4-mean', '5-mean', '1-max', '2-max', '3-max', '4-max', '5-max', 
     '1-std', '2-std', '3-std', '4-std', '5-std', '1-count', '2-count', 
     '3-count', '4-count', '5-count'], 
     dtype='object') 
関連する問題