如何删除包含特殊字符的 pandas 数据框列
How to drop pandas dataframe columns containing special characters
如何删除 pandas 包含特殊字符的数据框列,例如 @ / ] [ } { - _ 等?
例如我有以下数据框(称为df
):
我需要删除 Name
和 Matchkey
列,因为它们包含一些特殊字符。
另外,我如何根据删除列指定特殊字符列表?
例如:我想删除包含(在任何记录、任何单元格中)以下任何特殊字符的列:
listOfSpecialCharacters:¬,`,!,",£,$,£,#,/,\
一个选项是使用带有 str.contains
和 apply
的正则表达式,然后使用布尔索引删除列:
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
如何删除 pandas 包含特殊字符的数据框列,例如 @ / ] [ } { - _ 等?
例如我有以下数据框(称为df
):
我需要删除 Name
和 Matchkey
列,因为它们包含一些特殊字符。
另外,我如何根据删除列指定特殊字符列表?
例如:我想删除包含(在任何记录、任何单元格中)以下任何特殊字符的列:
listOfSpecialCharacters:¬,`,!,",£,$,£,#,/,\
一个选项是使用带有 str.contains
和 apply
的正则表达式,然后使用布尔索引删除列:
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