[英]Filtering out rows with non-alphanumeric characters
我试图从现有的DataFrame中获取一个DataFrame,其中只包含某列(其值为字符串)中的值不包含某个字符的行。
即如果我们不想要的角色是'('
原始数据帧:
some_col my_column
0 1 some
1 2 word
2 3 hello(
新数据框:
some_col my_column
0 1 some
1 2 word
我试过df.loc['(' not in df['my_column']]
,但这不起作用,因为df['my_column']
是一个Series对象。
我也尝试过: df.loc[not df.my_column.str.contains('(')]
,这也行不通。
你在找str.isalpha
:
df[df.my_column.str.isalpha()]
some_col my_column
0 1 some
1 2 word
如果你想保留字母和数字,类似的方法是str.isalnum
。
如果要处理字母和空格字符,请使用
df[~df.my_column.str.contains(r'[^\w\s]')]
some_col my_column
0 1 some
1 2 word
最后,如果你想删除整个标点符号,我在这里写了一个问答,这可能是一个有用的读物: 用熊猫快速删除标点符号
如果您要过滤掉该字符:
str.contains
逃离开放的paren。 某些字符可以解释为特殊的正则表达式字符。 你可以用反斜杠来逃避它们。
df[~df.my_column.str.contains('\(')]
some_col my_column
0 1 some
1 2 word
str.match
所有非开放式的 顺便说一句,这是一个坏主意! 检查整个字符串,它不是带有正则表达式的字符。
df[df.my_column.str.match('^[^\(]*$')]
some_col my_column
0 1 some
1 2 word
in
理解 df[['(' not in x for x in df.my_column]]
some_col my_column
0 1 some
1 2 word
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.