在解析 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 +5
、San Francisco 49ers -5
、San Francisco 49ers +8.5
、San 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)
我在 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 +5
、San Francisco 49ers -5
、San Francisco 49ers +8.5
、San 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)