如何从Python数据框中查找特殊字符

时间:2018-07-11 14:16:46

标签: python-3.x pandas dataframe special-characters

我需要从整个数据框中查找特殊字符。

在下面的数据框中,某些列包含特殊字符,如何查找哪些列包含特殊字符?

enter image description here

如果每列包含特殊字符,则要显示文本。

2 个答案:

答案 0 :(得分:2)

要从数据框列中删除不需要的字符,请使用正则表达式:

def strip_character(dataCol):
    r = re.compile(r'[^a-zA-Z !@#$%&*_+-=|\:";<>,./()[\]{}\']')
    return r.sub('', dataCol)

df[resultCol] = df[dataCol].apply(strip_character)

答案 1 :(得分:1)

例如,您可以设置一个有效字符的字母

import string
alphabet = string.ascii_letters+string.punctuation

哪个

'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'

只需使用

df.col.str.strip(alphabet).astype(bool).any()

例如,

df = pd.DataFrame({'col1':['abc', 'hello?'], 'col2': ['ÃÉG', 'Ç']})


    col1    col2
0   abc     ÃÉG
1   hello?  Ç

然后,使用上面的字母

df.col1.str.strip(alphabet).astype(bool).any()
False
df.col2.str.strip(alphabet).astype(bool).any()
True

特殊字符语句可能非常棘手,因为它取决于您的解释。例如,您可能可能不认为#是特殊字符。另外,某些语言(例如葡萄牙语)可能具有ãé这样的字符,而其他语言(例如英语)则不会。