2017-04-11 68 views
1

我有以下的熊貓數據框:大熊貓命名:指數的變化值特定列僅

    Cost 
Year Month ID 
2016 1  10 40 
     2  11 50 
2017 4  1  60 

YearMonthID彌補指數。我想將Month中的值設置爲等效名稱(例如1 = 1月,2 = 2月)。我想出了下面的代碼:

df.rename(index={i: calendar.month_abbr[i] for i in range(1, 13)}, inplace=True) 

但是,這改變了索引中的每一列中的值:

    Cost 
Year Month ID 
2016 Jan 10 40 
     Feb 11 50 
2017 Apr Jan 60 # Jan here is incorrect 

我明明只希望更改當月列中的值。我怎樣才能解決這個問題?

回答

2

使用set_levels

m = {1: 'Jan', 2: 'Feb', 4: 'Mar'} 
df.index.set_levels(
    df.index.levels[1].to_series().map(m).values, 
    1, inplace=True) 

print(df) 

       Cost 
Year Month ID  
2016 Jan 10 40 
    Feb 11 50 
2017 Mar 1  60 
+0

哪裏是我的字典映射數縮寫?那是'm'? –

+0

@ jcmetz21哎呀,我編輯了這個帖子 – piRSquared

+0

看起來不錯,謝謝! –