2017-02-01 5 views
2

私はMultiIndexされたPandasデータフレームを持っています。第2レベルには年([2014,2015])が含まれ、第3レベルには月番号([1,2、...、12])が含まれます。私はこれらの2つを - [1/2014、2/2014 ...、6/2015]のような単一のレベルにマージしたいと思います。これはどうすればできますか?2つのMultiIndexレベルを1つのPandasに統合します

私はパンダが新しくなりました。多くを検索しましたが、同様の質問/解決策は見つかりませんでした。

編集:私はthis questionの答えでこれをすべて行う必要がない方法を発見しました。私はそのようにデータフレームを作成していたはずです。これは、DateTimeによる索引付けの方法と思われます。

+0

私たちにdf.columnsを共有 – Boud

答えて

5

たちは私たちが望むのインデックスを表すリスト場合はインデックスにリストを再割り当てするpd.MultiIndexpd.DataFramemuxdf

mux = pd.MultiIndex.from_product([list('ab'), [2014, 2015], range(1, 3)]) 

df = pd.DataFrame(dict(A=1), mux) 

print(df) 

      A 
a 2014 1 1 
     2 1 
    2015 1 1 
     2 1 
b 2014 1 1 
     2 1 
    2015 1 1 
     2 1 

を考えてみましょう。

  • 私は現在の2番目と3番目のレベルの文字列連結する新しい第二レベルをしたいが、

    df.index.map('{0[2]}/{0[1]}'.format) 
    
  • 順序を逆に1レベル同じ

    df.index.get_level_values(0) 
    
  • をしたいです


df.index = [df.index.get_level_values(0), df.index.map('{0[2]}/{0[1]}'.format)] 

print(df) 

      A 
a 1/2014 1 
    2/2014 1 
    1/2015 1 
    2/2015 1 
b 1/2014 1 
    2/2014 1 
    1/2015 1 
    2/2015 1 
+0

素敵な答え!あなたは '' {0 [2]}/{0 [1]} '。具体的には、文字列内の数字は何ですか?また、 'format'メソッドにはどのような関係がありますか? – cbrnr

関連する問題