文本稍有不同时替换列名称

时间:2017-05-03 13:57:31

标签: python regex pandas

我经常收到数据csv文件,其中列标题充满了html垃圾 - 比如说:

"Do you like to VOTE _-<span style="font-size:16px;">in accordance with
your feelings&nbsp;</span>"

这是一个很难处理的问题,因此我会用可管理的东西替换垃圾:

data = data.rename(columns={'Do you like to VOTE _-<span style="font-size:16px;">in accordance with your feelings&nbsp;</span>':'VOTE'})

问题是垃圾中的'_'字符不是常数:有时它是一个空白区域,有时它是一个问号等。这意味着我必须手动指定角色,这会破坏整个目的。

所以,我的问题是,是否可以指定一个通配符,我可以代替下划线来允许所有可能的情况?我知道可能有一个正则表达式的方法,但我想知道我是否遗漏了一些更基本的东西,因为这看起来应该是一件简单易行的事情?

1 个答案:

答案 0 :(得分:2)

您可以使用re模块并使用正则表达式替换

import re

f = lambda x: re.sub(r'.*VOTE.*', 'VOTE', x)

df.rename(columns=f, inplace=True)

或者您可以在str.replace对象

上使用columns方法
df.columns = df.columns.str.replace(r'.*VOTE.*', 'VOTE')