【问题标题】:Wrong number of items passed 4, placement implies 1 while extracting with regex错误的项目数通过了 4,在使用正则表达式提取时放置意味着 1
【发布时间】:2019-03-19 00:52:55
【问题描述】:

我的数据框中的列(约 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

有人知道我错在哪里吗?如果对此有更好更快的解决方案,我将不胜感激。

提前致谢。

【问题讨论】:

    标签: python regex pandas dataframe


    【解决方案1】:

    你可以使用

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2022-07-19
      • 1970-01-01
      • 2018-11-03
      • 2023-03-30
      • 1970-01-01
      • 2022-01-13
      • 2020-10-30
      • 1970-01-01
      • 2019-05-17
      相关资源
      最近更新 更多