如何删除包含特殊字符的 pandas 数据框列

How to drop pandas dataframe columns containing special characters

如何删除 pandas 包含特殊字符的数据框列,例如 @ / ] [ } { - _ 等?

例如我有以下数据框(称为df):

我需要删除 NameMatchkey 列,因为它们包含一些特殊字符。 另外,我如何根据删除列指定特殊字符列表?

例如:我想删除包含(在任何记录、任何单元格中)以下任何特殊字符的列:

listOfSpecialCharacters:¬,`,!,",£,$,£,#,/,\

一个选项是使用带有 str.containsapply 的正则表达式,然后使用布尔索引删除列:

import re
chars = '¬`!"£$£#/\'
regex = f'[{"".join(map(re.escape, chars))}]'
# '[¬`!"£\$£\#/\\]'

df2 = df.loc[:, ~df.apply(lambda c: c.str.contains(regex).any())]

示例:

# input
     A    B    C
0  123  12!  123
1  abc  abc  a¬b

# output
     A
0  123
1  abc