繁体   English   中英

Pandas删除列包含*的行

[英]Pandas drop rows where column contains *

我试图从这个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

Esce * by \\因为*被解释为正则表达式

'*'使得到的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的值:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM