【问题标题】:Extracting price text Pandas提取价格文本 Pandas
【发布时间】:2021-02-08 06:13:17
【问题描述】:

我从网站上提取了有关房价的数据,但是价格列有诸如“报价超过 790,00 美元”之类的文字我希望能够提取价格,我已经尝试过

 test={'Price':['$593,000','$320,000+ price range','Offers Over $795,000'],'Bedrooms':['3','2','1']}
 Houses=pd.DataFrame(test)
 Houses['Price'].str.extract(pat='([$].)')

但是,这只会提取 $ 和第一个数字,但不会提取整个数字。

【问题讨论】:

  • “提取 $ 和第一个数字” - 这正是 ([$].) 应该提取的内容。

标签: python pandas dataframe extract


【解决方案1】:

应该在这里工作的一般正则表达式模式是:

\$\d{1,3}(?:\,\d{3})*\b

Demo

Python 代码:

Houses['Amount'] = Houses['Price'].str.extract(pat=r'\$(\d{1,3}(?:\,\d{3})*)\b')

如果您可能需要满足包含小数部分的房价,那么只需使用此正则表达式:

\$\d{1,3}(?:\,\d{3})*(?:\.\d+)?\b

【讨论】:

  • 不幸的是,这只是给我一个错误“ValueError:模式不包含捕获组”
  • @AusMau 已修复。为正则表达式模式使用原始字符串。
  • 太棒了,这一次有效,但是,现在我注意到价格末尾标有 m 或 s,例如“Mid to high $700,000s”,这个替代方案只提取 700,任何解决这个问题?非常感谢您的帮助
  • 然后使用:pat=r'\$(\d{1,3}(?:\,\d{3})*)',即去掉最后的单词边界即可。
猜你喜欢
  • 2022-08-22
  • 1970-01-01
  • 2016-01-19
  • 2021-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-03
  • 1970-01-01
相关资源
最近更新 更多