Pandas contains()方法无法识别'$'

时间:2017-08-02 21:05:12

标签: python pandas

我正在从特定列下的$1匹配的数据框中删除行。

我用

做到这一点
apts = apts[~apts.Price.str.contains('$1')]

这不会删除任何行。但我知道我在Price栏下有$1行。

例如,返回true:

if str(apts.ix[8193]['Price']) == '$1':
    print('True')

有什么想法在这里发生?

3 个答案:

答案 0 :(得分:1)

$是一个具有特殊含义的元字符。你需要逃避它以符合它的字面意思。从here开始,您可以看到它依赖于正则表达式。

apts = apts[~apts.Price.str.contains('\$1')]

答案 1 :(得分:0)

看起来Pandas contains方法不包括正则表达式,在这种情况下,$用于表示一行的结尾。您可能希望使用$来逃避\,因此您的代码将为apts = apts[~apts.Price.str.contains('\$1')]

答案 2 :(得分:0)

除了使用'$'转发'\$'之外,了解您可以使用regex=False

关闭正则表达式非常重要

考虑示例数据框apts

apts = pd.DataFrame(dict(Price=['2,000', '$1,000', '1000', '$14']))

    Price
0   2,000
1  $1,000
2    1000
3     $14

然后使用regex=False

apts[apts.Price.str.contains('$', regex=False)]

   Price
0  2,000
2   1000
相关问题