[英]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
Year
, Month
和ID
列构成索引。 我想将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.