我正在尝试从此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
答案 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)]