我正在尝试从现有的 DataFrame 中获取一个 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']
是一个系列对象。
我也尝试过: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
最后,如果您想要删除整个标点符号,我在这里写了一个问答,这可能是一个有用的读物:Fast punctuation removal with pandas
关于python - 过滤掉包含非字母数字字符的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50595548/