我的pandas df具有某些列名称。列名如下,
u'Kanta / City',u'Aluepaso / Region Level',u'Akue / District',u'Seotukartakudi / Map code',u'k�/ Age',u'2015',u'2016' ,u'2017',u'2018'。
我想做的是,按如下所示在一行代码中重命名列,
“城市”,“区域级别”,“地区”,“地图代码”,“年龄”,“ 2015”,“ 2016”,“ 2017”,“ 2018”。
有什么有效的方法(使用lambda函数)吗?
答案 0 :(得分:3)
使用lambda:
df.rename(columns=lambda x: x.split('/')[1].replace(' ','_') if '/' in x else x, inplace= True)
df.columns
> Index(['City', 'Regional_Level', 'District', 'Map_code', 'Age', '2015', '2016',
'2017', '2018'],
dtype='object')
答案 1 :(得分:0)
使用正则表达式使用replace
最简单。
>>> df
Empty DataFrame
Columns: [Kanta/City, Aluepaso/Regional Level, Akue/District, Seotukartakudi/Map code, k�/Age, 2015, 2016, 2017, 2018]
Index: []
>>> df.columns.str.replace('.*[\\\/]', '')
Index(['City', 'Regional Level', 'District', 'Map code', 'Age', '2015', '2016',
'2017', '2018'],
dtype='object')
正则表达式说明:
.*
匹配任何字符(行终止符除外)
*
量词-尽可能在零到无限次之间进行匹配,并根据需要进行回馈(贪婪)匹配
[\\\/]
下面的列表中存在的单个字符
\\
从字面上匹配字符\
(区分大小写)
\/
从字面上匹配字符/
(区分大小写)