首页 > 解决方案 > 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

标签: pythonregexpandas

解决方案


您可以使用

>>> 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 中。

请参阅正则表达式演示


推荐阅读