【问题标题】:How to extract only the string component between parenthesis?如何仅提取括号之间的字符串组件?
【发布时间】:2020-02-10 02:19:28
【问题描述】:

我正在寻找一种从数据列中删除特定元素的有效方法。

我有这样的数据:

year
1 (1991)
10 (1991-2001)
8 (1991-1998)
2 (2000-2002)

我想变成这样:

year
1991
1991 - 2001
1991 - 1998
2000 - 2002

我想删除括号和括号前后的元素。

【问题讨论】:

    标签: python regex pandas etl data-cleaning


    【解决方案1】:

    用正则表达式:

    df = pd.DataFrame({'year': ['1 (1991)', '10 (1991-2001)', '8 (1991-1998)', '2 (2000-2002)']})
    
               year
           1 (1991)
     10 (1991-2001)
      8 (1991-1998)
      2 (2000-2002)
    
    df['year'] = df['year'].str.extract(r'\((.*)\)')
    
          year
          1991
     1991-2001
     1991-1998
     2000-2002
    

    【讨论】:

      【解决方案2】:

      你可以使用下面的代码

      df['year'] = df['year'].str.split('(').str[1].str.strip(')')
      

      输出

          year
      0   1991
      1   1991-2001
      2   1991-1998
      3   2000-2002
      

      【讨论】:

        【解决方案3】:

        怎么样:

        df['year'] = df['year'].str[1:-1]
        

        如果您的数据并非总是以'()' 开头/结尾,则更安全:

        # str.strip accepts regex
        df['year'] = df['year'].str.strip('(|)')
        

        输出:

        1          1991
        10    1991-2001
        8     1991-1998
        2     2000-2002
        Name: year, dtype: object
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-01-26
          • 2017-11-10
          • 1970-01-01
          • 1970-01-01
          • 2018-07-11
          • 2021-05-25
          • 1970-01-01
          相关资源
          最近更新 更多