我在将正则表达式函数应用于python数据框中的列时遇到问题。这是我的数据框的标题:
Name Season School G MP FGA 3P 3PA 3P%
74 Joe Dumars 1982-83 McNeese State 29 NaN 487 5 8 0.625
84 Sam Vincent 1982-83 Michigan State 30 1066 401 5 11 0.455
176 Gerald Wilkins 1982-83 Chattanooga 30 820 350 0 2 0.000
177 Gerald Wilkins 1983-84 Chattanooga 23 737 297 3 10 0.300
243 Delaney Rudd 1982-83 Wake Forest 32 1004 324 13 29 0.448
我以为我对将函数应用于Dataframes有很好的掌握,所以也许我缺少Regex技能。
这是我整理的:
import re
def split_it(year):
return re.findall('(\d\d\d\d)', year)
df['Season2'] = df['Season'].apply(split_it(x))
TypeError: expected string or buffer
输出将是名为Season2的列,其中包含连字符前的年份。我敢肯定,没有正则表达式,这是一种更简单的方法,但更重要的是,我正在努力弄清楚我做错了什么
感谢您的任何提前帮助。
当我尝试(一种变体)您的代码时,我得到了NameError: name 'x' is not defined
-事实并非如此。
您可以使用
df['Season2'] = df['Season'].apply(split_it)
要么
df['Season2'] = df['Season'].apply(lambda x: split_it(x))
但是第二个只是编写第一个的一种较长且较慢的方式,因此没有太多意义(除非您要处理其他参数,我们不在这里。)尽管如此,您的函数将返回一个 list :
>>> df["Season"].apply(split_it)
74 [1982]
84 [1982]
176 [1982]
177 [1983]
243 [1982]
Name: Season, dtype: object
尽管您可以轻松更改它。FWIW,我将使用向量化字符串操作并执行类似的操作
>>> df["Season"].str[:4].astype(int)
74 1982
84 1982
176 1982
177 1983
243 1982
Name: Season, dtype: int64
要么
>>> df["Season"].str.split("-").str[0].astype(int)
74 1982
84 1982
176 1982
177 1983
243 1982
Name: Season, dtype: int64
问题内容: 我已将一些定价数据读入pandas数据框中,其值显示为: 我想将其简化为数字值。我知道我可以遍历并应用正则表达式 到每个字段,然后将结果列表重新组合在一起,但是有没有一种循环的方式? 谢谢 问题答案: 您可以使用删除所有非数字: regex101演示
(?:x) (x) 这两个好像可以平价替换的吧。有什么特殊应用吗?
我正在尝试使用一个Java正则表达式来提取数据。它符合我的数据,但我无法得到组数据。我正在尝试获取数据1,xmlAggregator,268803451,3。查看文档,我假设如果在\d+和\w+周围加上(),就会得到组中的数字和字符串。对如何更改正则表达式有什么建议吗? 字符串: Java代码: 输出: 希望得到:
问题内容: 我有这小段代码 应该打印 但是它什么也没打印! 问题答案: 欢迎使用Java的错误命名方法…它尝试并匹配所有输入。不幸的是,其他语言也纷纷效仿:( 如果要查看正则表达式是否与输入文本匹配,请使用和匹配器的方法: 如果确实要查看输入是否仅包含小写字母,则可以使用,但需要匹配一个或多个字符:将a附加+到字符类中,如中所示。或使用和。
我正在努力想出一个正则表达式,它只能在单词的开头找到符号。例如: 这里: 但不是这里:
昨天,我需要向正则表达式添加一个文件路径,创建一个如下所示的模式: 一开始正则表达式不匹配,因为包含几个正则表达式特定的符号,如 或 。作为快速修复,我将它们替换为 和 . 与 . 然而,我问自己,是否没有一种更可靠或更好的方法来清除正则表达式特定符号中的字符串。 Python 标准库中是否支持此类功能? 如果没有,您是否知道一个正则表达式来识别所有正则表达式并通过替代品清理它们?