我正在从特定列下的$1
匹配的数据框中删除行。
我用
做到这一点apts = apts[~apts.Price.str.contains('$1')]
这不会删除任何行。但我知道我在Price栏下有$1
行。
例如,返回true:
if str(apts.ix[8193]['Price']) == '$1':
print('True')
有什么想法在这里发生?
答案 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