2017-02-01 66 views
2

我有一個MultiIndexed的Pandas數據框。第二級包含一年([2014,2015]),第三級包含月份編號([1,2,...,12])。我想將這兩個合併爲一個單一的層次,例如 - [1/2014,2/2014 ...,6/2015]。這怎麼能做到?將兩個MultiIndex級別合併爲一個在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 

我們要重新分配的指標,如果代表我們想要在索引中列出的清單。

  • 我想第一級相同

    df.index.get_level_values(0) 
    
  • 我希望新的第二級是目前第二和第三級別的字符串連接,但順序顛倒

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

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