删除所有带有特殊字符的熊猫行

时间:2019-02-01 18:25:38

标签: python pandas encoding

我有一个数据框,其中EPI_ID列之一中包含特殊字符(如正方形)。我要删除包含此特殊字符的所有行。这不是标准字符,我在数据帧中还没有发现与此类似的问题,主要是字符串。不过,我在识别这些列时遇到了麻烦。有什么建议吗?

df

EPI_ID    stuff
2342F     randoM_words
FER43     predictive_words
u'\u25A1' blank

我的尝试

df[~df['EPI_ID'].apply(lambda x: x.encode('ascii') == True)]

我的结果每一行都抛出False。

预期输出:

EPI_ID    stuff
2342F     randoM_words
FER43     predictive_words

编辑:在模拟df中不会出现正方形。但这就是square

1 个答案:

答案 0 :(得分:1)

假设您的DataFrame看起来像这样:

>>> 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

您可以使用处理正则表达式的str.contains

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

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

此表达式的正则表达式:(grep) Regex to match non-ASCII characters?