过滤掉包含' **'的数据框中的所有行

时间:2018-06-15 14:09:19

标签: python pandas dataframe series

我正在尝试过滤掉包含子字符串'**'的DataFrame中的所有行。

我试过用

做这件事
df = df[~df['title'].str.contains('**')]

但是我一直收到错误

  

错误:在0位没有重复

并且无法弄清楚原因。

2 个答案:

答案 0 :(得分:3)

默认情况下,str.contains使用re.search,{{3}}将*视为特殊字符(匹配0个或更多字符)。您希望与contains('**', regex=False)通话以避免使用re.search - 而是使用Python in运算符。

答案 1 :(得分:3)

您必须使用*转义\字符,因为它被视为特殊正则表达式字符*(表示零或更多)。在你的情况下:

df[~df['title'].str.contains('\*\*')]

示例

>>> df
   title
0    xyz
1  x**yz
2     **
3     x*

df[~df['title'].str.contains('\*\*')]

  title
0   xyz
3    x*