Pandas删除列包含*的行

时间:2017-04-23 08:01:53

标签: python pandas

我正在尝试从此df中删除所有行,其中'DB Serial'列包含字符*:

    DB Serial
0     13058
1     13069
2    *13070
3     13070
4     13044
5     13042

我正在使用:

df = df[~df['DB Serial'].str.contains('*')]

但是我收到了这个错误:

    raise error, v # invalid expression
error: nothing to repeat

1 个答案:

答案 0 :(得分:5)

*退出\,因为*被解释为regex

  

' *' 导致生成的RE匹配前一个RE的0次或更多次重复

df = df[~df['DB Serial'].str.contains('\*')]
print (df)
  DB Serial
0     13058
1     13069
3     13070
4     13044
5     13042

如果还得到:

  

TypeError:一元〜:' float'

的坏操作数类型

然后将列转换为string,因为混合值 - 带字符串的数字:

df = df[~df['DB Serial'].astype(str).str.contains('\*')]
print (df)
  DB Serial
0     13058
1     13069
3     13070
4     13044
5     13042

如果可能NaN s值:

df = df[~df['DB Serial'].str.contains('\*', na=False)]