删除不必要的字符并编辑熊猫中的列名

时间:2018-11-22 10:31:17

标签: python pandas lambda multiple-columns rename

我的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函数)吗?

2 个答案:

答案 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')

正则表达式说明:

  

.*匹配任何字符(行终止符除外)

     

*量词-尽可能在零到无限次之间进行匹配,并根据需要进行回馈(贪婪)

     

匹配[\\\/]下面的列表中存在的单个字符

     

\\从字面上匹配字符\(区分大小写)

     

\/从字面上匹配字符/(区分大小写)