gpt4 book ai didi

python - 通过 4 的项目数量错误,使用正则表达式提取时放置意味着 1

转载 作者:行者123 更新时间:2023-12-01 08:55:26 24 4
gpt4 key购买 nike

我的数据框中有一些列(约 200 万行),如下所示:

column
1/20/1"ADAF"
1/4/551BSSS
1/2/1AAAA
1/565/1 "AAA="

我只想提取:

1/20/1
1/4/551
1/2/1
1/565/1

我尝试过:

df['wanted_column'] = df['column'].str.extract(r'((\d+)/(\d+)/(\d+))', expand=True)

但是我得到了一个错误:

ValueError: Wrong number of items passed 4, placement implies 1

谁知道我哪里错了?如果有更好更快的解决方案,我将不胜感激。

提前致谢。

最佳答案

如果您想将字符串的单个部分提取到单个列中,请确保您的正则表达式仅包含单个捕获组。删除所有其他捕获组(如果它们是冗余的)或将它们转换为非捕获组(如果它们用作模式序列的简单分组,例如 (\W+\w+){0,3} -> (?:\W+\w+){0,3} )。

在这里,您可以使用

df['wanted_column'] = df['column'].str.extract(r'(\d+/\d+/\d+)', expand=True)

重点是,当您将其与 str.extract 一起使用时,仅在正则表达式中使用单个捕获组将值提取到单个列中。

请注意r'((\d+)/(\d+)/(\d+))'也可以重写为 r'((?:\d+)/(?:\d+)/(?:\d+))'对于此用例,但这些非捕获组将是多余的,因为它们仅对单个 \d+ 进行分组他们每个人都有模式,这没有意义。

如果您需要将值提取到多列中,请注意列数应等于模式中捕获组的数量,例如

df[['Val1', 'Val2', 'Val3']] = df['column'].str.extract(r'(\d+)/(\d+)/(\d+)', expand=True)
# 1 2 3 ^ 1 ^ ^ 2 ^ ^ 3 ^

关于python - 通过 4 的项目数量错误,使用正则表达式提取时放置意味着 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52802425/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com