我有一个数据框,其中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
答案 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?