删除不需要的字符和编辑熊猫中的列名

Posted

技术标签:

【中文标题】删除不需要的字符和编辑熊猫中的列名【英文标题】:Removing unwanted characters and editing Column names in pandas 【发布时间】:2019-04-25 00:24:34 【问题描述】:

我有带有某些列名的 pandas df。列名如下,

u'Kanta/City', u'Aluepaso/Regional Level', u'Akue/District', u'Seotukartakudi/地图代码', u'k�/Age', u'2015', u'2016' ,你'2017',你'2018'。

我想做的是,将一行代码中的列重命名如下,

'City'、'Regional_Level'、'District'、'Map_Code'、'Age'、'2015'、'2016'、'2017'、'2018'。

有没有有效的方法(使用 lambda 函数)?

【问题讨论】:

@Kripalu Sar what you should do when someone answers your question 必须学习! 【参考方案1】:

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

【讨论】:

【参考方案2】:

最简单的方法是使用正则表达式使用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')

正则表达式解释:

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

* 量词 - 匹配零次和无限次,尽可能多次,根据需要回馈(贪婪)

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

\\ 匹配字符 \ 的字面意思(区分大小写)

\/ 与字符 / 匹配(区分大小写)

【讨论】:

我不理解没有任何评论或反映建议的减号投票?

以上是关于删除不需要的字符和编辑熊猫中的列名的主要内容,如果未能解决你的问题,请参考以下文章

根据列名中的匹配字符串对熊猫单元格(字符串)进行排序

seasonal_decomposition 的 resid 函数删除 Python 中的列名

如何从熊猫数据框中的列中删除字符串值

根据列名重新排序熊猫数据框中的列[重复]

根据列名重新排序熊猫数据框中的列[重复]

根据列名重新排序熊猫数据框中的列[重复]