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

新手上路,请多包涵

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

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

在此处输入图像描述

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

原文由 Learnings 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 830
2 个回答

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

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

声明 特殊字符 可能非常棘手,因为它取决于您的解释。例如,您 可能会可能不会# 视为特殊字符。此外,某些语言(例如葡萄牙语)可能有 ãé 之类的字符,但其他语言(例如英语)则没有。

原文由 rafaelc 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

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

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

原文由 Plinus 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进