在解析 python 中包含名称和数字的字符串列时,有没有办法通过 select 数字?

Is there a way to pass through select numbers when parsing a string column that contains a name and number in python?

我在 python Name 中有一列,其中包含足球队名称和数字,例如 New Orleans Saints +2

我将数据解析为 2 个单独的附加列,如 Name2: New Orleans Saints & Name3: +2

我使用这行代码来做到这一点:NameSeparate=dt['Name'].str.split(r'\s(?:([+-]?\d{,100}\.?\d{1,100}?))', expand=True)

然后 dt[Name2] = NameSeparate[0] & dt[Name3] = NameSeparate[1] 分离并创建 2 个新列

当代码解析 49 而不是 +5

时,代码引入 San Francisco 49ers +5 时出现问题

我试过写一个检查循环,但无法让脚本通过 49,只能拉 +5

名称将始终以 San Francisco 49ers 形式出现,但是第二部分除了后面的任何数字之外还可以具有 +- 符号,例如它可能会出现如:San Francisco 49ers +5San Francisco 49ers -5San Francisco 49ers +8.5San Francisco 49ers -8.5

有人可以帮我写一张支票吗?谢谢!

如果第二列的数字前面总是有+-,则应删除[=15=之后的? ] 在您的正则表达式中拆分原始列:

NameSeparate=dt['Name'].str.split(r'\s(?:([+-]\d{,100}\.?\d{1,100}?))', expand=True)

否则,您还 select 之前没有放置此类符号的数字,正如您已经注意到的那样。

如果还有数字前面没有 +- 的条目,您可以在正则表达式字符串的最后添加一个 $,表示字符串的结尾。由于数字似乎总是排在最后,这也应该有效:

NameSeparate=dt['Name'].str.split(r'\s(?:([+-]?\d{,100}\.?\d{1,100}?))$', expand=True)