首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Pandas contains()方法不能识别“$”

Pandas contains()方法不能识别“$”
EN

Stack Overflow用户
提问于 2017-08-03 05:05:12
回答 3查看 35关注 0票数 1

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

我是这样做的

代码语言:javascript
运行
复制
apts = apts[~apts.Price.str.contains('$1')]

这不会删除任何行。但是我知道我和$1在价格列下面有一些行。

例如,这将返回true:

代码语言:javascript
运行
复制
if str(apts.ix[8193]['Price']) == '$1':
    print('True')

知道这是怎么回事吗?

EN

回答 3

Stack Overflow用户

发布于 2017-08-03 05:08:43

$是一个具有特殊含义的元字符。你需要对它进行转义,以符合字面意思。从here可以看出它依赖于正则表达式。

代码语言:javascript
运行
复制
apts = apts[~apts.Price.str.contains('\$1')]
票数 1
EN

Stack Overflow用户

发布于 2017-08-03 05:08:05

它看起来像$ contains方法除了一个正则表达式,在这种情况下,Pandas用来表示行的结束。您可能希望使用\$进行转义,因此您的代码应该是apts = apts[~apts.Price.str.contains('\$1')]

票数 0
EN

Stack Overflow用户

发布于 2017-08-03 05:35:23

除了用'\$'转义'$'之外,重要的是要知道可以用regex=False关闭正则表达式的使用

考虑一下示例数据帧apts

代码语言:javascript
运行
复制
apts = pd.DataFrame(dict(Price=['2,000', '$1,000', '1000', '$14']))

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

然后使用regex=False

代码语言:javascript
运行
复制
apts[apts.Price.str.contains('$', regex=False)]

   Price
0  2,000
2   1000
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45470972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档