繁体   English   中英

大熊猫重命名:仅更改特定列的索引值

[英]pandas rename: change values of index for a specific column only

我有以下熊猫数据框:

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

YearMonthID列构成索引。 我想将Month内的值设置为等效的名称(例如1 = Jan,2 = Feb)。 我想出了以下代码:

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

我显然只想更改“月”列中的值。 我怎样才能解决这个问题?

使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM