python - Pandas 从字符串中提取带有小数运算符 afer $ 的数字
问题描述
还有几个类似的问题,我仍然无法解决我的问题。
我有一个来自扑克游戏的 pandas 列,想从中分析底池大小,因此我需要在$
. 该列如下所示:
Action
Player (8, 5) won the $5.40 main pot with a Straight
...
Player (A, 2) won the $21.00 main pot with a flush
...
当我跑步时:df['number'] = df['action'].str.extract('([0-9][,.]*[0-9]*)')
它没有给我预期的结果,结果应该是:
number
5.40
...
21.00
解决方案
您可以使用
>>> import pandas as pd
>>> df = pd.DataFrame({'action':['Player (8, 5) won the $5.40 main pot with a Straight','Player (A, 2) won the $21.00 main pot with a flush']})
>>> df['action'].str.extract(r'\$(\d+(?:[,.]\d+)*)', expand=False)
0 5.40
1 21.00
Name: Action, dtype: object
该\$(\d+(?:[,.]\d+)*)
模式匹配一个文字$
符号,然后将任何一个或多个数字,然后是零个或多个 a ,
or序列,.
然后是一个或多个数字捕获到组 1 中。
请参阅正则表达式演示。
推荐阅读
- java - 将文本文件读入一维数组
- unit-testing - 带有替换注释的 Micronaut 模拟存储库接口
- python - 从 python 文件中导入所有函数上一层
- github-actions - github-action set env from date 打印在标准输出上
- configuration - 为什么我的 app.config 中没有智能感知?
- javascript - 我尝试让几个 div 在点击时单独显示
- webpack - webpack 给我错误“无效的配置对象。'插件'。”
- java - TreeTableView - 在树列上设置滚动?
- javascript - 高于 0x99 的 Uint8Array 值打印为 0
- amazon-web-services - AWS 中的预留实例灵活性