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

如何从列中所有行的字符串中删除文本?

  •  0
  • Namra  · 技术社区  · 2 年前

    问题

    雷普雷克斯

    我所拥有的

    df1 = pd.DataFrame({'a': [1, 1, 2, 2, 3],
                        'b': ["NOSE PARKER Bond 1 Spain", "Fire PA1KER Bond 10 UK", 
                              "NOSE 2HANDS Bond 3 FRANCE", "EARS STARKER Bond 11 SOUTH AFRICA",
                              "NORSEPACKER Bond 01 JAPAN2002"],
                        'c': [13, 9, 12, 5, 5]})
    df1
    

    enter image description here

    我想要什么

    df2 = pd.DataFrame({'a': [1, 1, 2, 2, 3],
                        'b': ["NOSE PARKER Bond 1 Spain", "Fire PA1KER Bond 10 UK", 
                              "NOSE 2HANDS Bond 3 FRANCE", "EARS STARKER Bond 11 SOUTH AFRICA",  
                              "NORSEPACKER Bond 01 JAPAN2002"],
                        'c': [13, 9, 12, 5, 5],
                        'b new': ["Bond 1", "Bond 10", "Bond 3", "Bond 11", "Bond 01"]})
    df2
    

    enter image description here

    我的尝试

    df1["b new"] = df1["b"].str.replace("[^Bond\s\d]", "").str.strip()
    df1
    

    enter image description here

    1 回复  |  直到 2 年前
        1
  •  2
  •   Manjari    2 年前

    您可以使用提取方法来获取所需的格式。根据下面的正则表达式,在bond之前有一个空格,在digit之前有空格,digit可以是一个或多个。

    df['b_new'] = df.b.str.extract('( Bond \d+)' )

    结果:

       a                                  b   c     b_new
    0  1           NOSE PARKER Bond 1 Spain  13    Bond 1
    1  1             Fire PA1KER Bond 10 UK   9   Bond 10
    2  2          NOSE 2HANDS Bond 3 FRANCE  12    Bond 3
    3  2  EARS STARKER Bond 11 SOUTH AFRICA   5   Bond 11
    4  3      NORSEPACKER Bond 01 JAPAN2002   5   Bond 01