如何对熊猫使用RE OR操作数RE .str.extract()

Python_Learner_DK

我是新手,请确保这在我的代码中有些愚蠢。在我的辩护中,我曾尝试在此处遍历Python RE文档然后再进行查询和搜索,但到目前为止没有看到重复的问题(这使我感到惊讶。)

在DataFrame之外,我在这里有一个正在工作的示例:

x = 'my best friend's birthday is 24 Jan 2001.'
print(re.findall('\d{1,2}\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[a-z]*\s\d{2,4}', x))
<Anaconda console returns:> 24 Jan 2001

但是在我的数据框(df1)中,我有以下内容:

index     text
0         My birthday is 2/21/19
1         Your birthday is 4/1/20
2         my best friend's birthday is 24 Jan 2001.   

当我运行以下代码时:

df1['dates'] = df1['text'].str.extract('.*?(\d+[/-]\d+[/-]?\d*).*?|\d{1,2}\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[a-z]*\s\d+')
print('df1['dates'])

我得到以下结果:

     dates
0    2/21/19
1    4/1/20
2    NaN

我尝试使用括号,重新阅读了文档,以及其他一些导致无休止错误的调整。我敢肯定这是一个明显的错误,但我看不到。有人可以帮忙吗?谢谢。

詹姆士

.extract()在大熊猫中使用时您必须有一个捕获组OR之前的捕获组|正在查找带斜线的日期。但是在“或”之后,您只有一个非捕获组。

在这里,我对整个搜索模式进行了捕获,并且“或”的每一侧也都有一个非捕获组。

import pandas as pd

df = pd.DataFrame({'text': ['My birthday is 2/21/19', 
    'Your birthday is 4/1/20', 
    'my best friend\'s birthday is 24 Jan 2001.']})

df.text.str.extract(
    r'((:?\d+[/-]\d+[/-]?\d*)|' + 
    r'(:?\d{1,2}\s(:?Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[a-z]*\s\d+))', 
    expand=False)[0]

# returns:
0        2/21/19
1         4/1/20
2    24 Jan 2001

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

+不支持的操作数类型:使用熊猫平均值的“ int”和“ str”

TypeError: 不支持 & 的操作数类型:'str' 和 'str' 如何解决

TypeError: 不支持的操作数类型 -: 'str' 和 'str' 尝试使用 df.diff()

TypeError:“-:'Timestamp'和'str'不支持的操作数类型”熊猫

RE错误:重复运算符操作数无效

如何修复 TypeError: 不支持的操作数类型 +: 'int' 和 'str'

我如何修复 TypeError: 不支持的操作数类型 +: 'WindowsPath' 和 'str'

如何修复:TypeError: 不支持的操作数类型 /: 'str' 和 'float'

TypeError:不支持&的操作数类型:使用np.select的'str'和'bool'

将函数应用于熊猫列会产生错误“ abs()的操作数类型错误:'str'”

- 不支持的操作数类型:“str”和“str”

如何修复 [类型错误:+= 不支持的操作数类型:'builtin_function_or_method' 和 'str'] Python 中的错误

python - 如何解决不支持的操作数类型-:'str'和'datetime.timedelta'?

使用scikit-learn进行kNN分类:TypeError:/不支持的操作数类型:“ str”和“ int”

使用 Pandas 读取 csv 文件时,它会为 /: 'module' 和 'str' 输出不支持的操作数类型

pd.str.extract()和re.search()的不同输出

如何在使用 re.fullmatch 时修复“TypeError:不支持的操作数类型”:“list”和“list”

-:'str'和'int'的不受支持的操作数类型

+不支持的操作数类型:“ int”和“ str”

一元错误的操作数类型-:'str'

+不支持的操作数类型:“ WindowsPath”和“ str”

+不支持的操作数类型(“ str”和“ int”)

不支持 / 的操作数类型:'str' 和 'float'

收到RE错误:osx sed上的重复运算符操作数无效

sed RE错误:重复运算符操作数无效

用熊猫操作数据框

如何找到qsort()的比较操作数?

如何操作数据框列表

操作数据框(使用R)