Python 筛选出包含特殊字符的数据帧行的最快方法
我有一个特殊字符列表。比如说Python 筛选出包含特殊字符的数据帧行的最快方法,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个特殊字符列表。比如说 BAD_CHARS = ['.', '&', '\(', '\)', ';', '-'] 我想删除包含这些特殊字符的pandas dataframe列中的所有行。目前我正在做以下工作 df = ''' words frequency & 11 CONDUCTED 3 (E.G., 5 EXPERIMENT 6
BAD_CHARS = ['.', '&', '\(', '\)', ';', '-']
我想删除包含这些特殊字符的pandas dataframe列中的所有行。目前我正在做以下工作
df = '''
words frequency
& 11
CONDUCTED 3
(E.G., 5
EXPERIMENT 6
(VS. 5
(WARD 3
- 14
2006; 3
3D 5
ABLE 5
ABSTRACT 3
ACCOMPANIED 5
ACTIVITY 11
AD 5
ADULTS 6
'''
for char in BAD_CHARS:
df = df[~df['word'].str.contains(char)]
# Expected Result
words frequency
CONDUCTED 3
EXPERIMENT 6
3D 5
ABLE 5
ABSTRACT 3
ACCOMPANIED 5
ACTIVITY 11
AD 5
ADULTS 6
首先它不起作用,其次我想它不快。那么,我怎样才能更快地做到这一点呢?谢谢我相信您首先需要转义值,然后通过
和@c加入ᴏʟᴅsᴘᴇᴇᴅ 从坏字符中的值中删除\
:
import re
BAD_CHARS = ['.', '&', '(', ')', ';', '-']
pat = '|'.join(['({})'.format(re.escape(c)) for c in BAD_CHARS])
df = df[~df['words'].str.contains(pat)]
print (df)
words frequency
1 CONDUCTED 3
3 EXPERIMENT 6
8 3D 5
9 ABLE 5
10 ABSTRACT 3
11 ACCOMPANIED 5
12 ACTIVITY 11
13 AD 5
14 ADULTS 6
因为此返回空帧:
df[~df['word'].str.contains('|'.join(BAD_CHARS))]
@请把它归零。首先,不要逃脱大括号<代码>坏字符=['.'、'&'、'('、')'、';'、'-']
。接下来,您可以使用字符类,也可以使用re.escape
。像这样的df[~df['words'].str.contains([{}].”format('''.join(BAD_CHARS))]
如果您在复制时遇到问题,只需将其键入即可。它返回空框:(问题以重复形式结束,我已在评论中说明了他们问题的具体内容**。否则,我可以自己发布答案:/谢谢。多么简单:)@cᴏʟᴅsᴘᴇᴇᴅ - 我不明白或者,我可以自己发布答案:/
你认为我会复制你的评论答案吗?我只使用了评论的一部分-不要逃避它,并添加提到的内容。