代码之家  ›  专栏  ›  技术社区  ›  MHA

Pandas str.extract()以字母结尾的数字

  •  1
  • MHA  · 技术社区  · 2 年前

    我有一个熊猫专栏,如下所示:

          df['description']
    0.   PRAIRIE HIGHLANDS SIXTH PLAT Lt: 156 PIN# DP73770000 0156 312 ABC
    1.   PRAIRIE VILLAGE   PIN# OP55000034 0020A Rmrk: PT OF
    2.   Sub: HOLLY GREEN Lt: 14 Bl: 1 PIN# DP34500001 0D14
    3.   FAIRWAY   PIN# GP20000006 0029 Rmrk: W
    

    我想退出 PIN# 这样,预期结果:

    DP73770000 0156 312
    OP55000034 0020A
    DP34500001 0D14
    GP20000006 0029
    

    我所尝试的:

    df['PIN'] = df['description'].str.extract(r'\b(?:PIN# ?) (\w+(?:(?:\s*[ ])+\s*\d+)*)\b')
    

    我得到的结果:

    DP73770000 0156 312
    OP55000034
    DP34500001
    GP20000006 0029
    

    在空格后的数字之间有字母的数字不会被拾取。我也试过其他几款正则表达式,但都没有成功。我如何解决这个问题?请帮忙。

    1 回复  |  直到 2 年前
        1
  •  1
  •   Tim Biegeleisen    2 年前

    我会使用 str.extract

    df["PIN"] = df["description"].str.extract(r'PIN#((?: [A-Z0-9]*[0-9][A-Z0-9]*)*)')
    

    这是一个正在运行的正则表达式的链接 demo 表明逻辑是有效的。