Python 删除熊猫中具有特殊字符的所有行

Python 删除熊猫中具有特殊字符的所有行,python,pandas,encoding,Python,Pandas,Encoding,我有一个数据框,其中一列EPI_ID中有特殊字符(如正方形)。我想删除包含此特殊字符的所有行。这不是标准字符,我在数据帧中没有发现类似的问题,主要是字符串。然而,我很难识别这些列。有什么建议吗 df 我的尝试: df[~df['EPI_ID'].apply(lambda x: x.encode('ascii') == True)] 我的结果每行都是假的 预期产出: EPI_ID stuff 2342F randoM_words FER43 predictive_words

我有一个数据框,其中一列
EPI_ID
中有特殊字符(如正方形)。我想删除包含此特殊字符的所有行。这不是标准字符,我在数据帧中没有发现类似的问题,主要是字符串。然而,我很难识别这些列。有什么建议吗

df

我的尝试:

df[~df['EPI_ID'].apply(lambda x: x.encode('ascii') == True)]
我的结果每行都是假的

预期产出:

EPI_ID    stuff
2342F     randoM_words
FER43     predictive_words

编辑:正方形不会出现在模拟df中。但这就是它的本来面目

假设您的
数据帧
如下所示:

>>> df = pd.DataFrame({'EPI_ID': ['2343F', 'FER43', 'DF' + u'\u25A1' + '123', 'PQRX74'], 'STUFF': ['abc', 'def', 'ghi', 'jkl']})

>>> df

   EPI_ID STUFF
0   2343F   abc
1   FER43   def
2  DF□123   ghi
3  PQRX74   jkl
您可以使用,它处理正则表达式:

df.loc[df['EPI_ID'].str.contains(r'[^\x00-\x7F]+') == False]

   EPI_ID STUFF
0   2343F   abc
1   FER43   def
3  PQRX74   jkl

Regex提供了这样的答案:

示例没有正方形,也请发布预期的输出。谢谢你不允许我显示“正方形”…这是什么ASCII码?这是一个unicode字符,我理解为,在问题中添加了一个链接来显示字符。
df.loc[df['EPI_ID'].str.contains(r'[^\x00-\x7F]+') == False]

   EPI_ID STUFF
0   2343F   abc
1   FER43   def
3  PQRX74   jkl