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

使用正则表达式从字符串列中删除小数和非数字

  •  0
  • aabujamra  · 技术社区  · 8 年前

    我有一个dataframe列,其字符串如下:

    df.column1:
    0 R$ 27.467.522,00 (Vinte e sete milhões, quatro...
    1 NaN
    2 R$ 35.314.312,12 (Trinta e cinco milhões, trezentos...
    3 R$ 1.231,34 (Mil duzentos e trinta e um reais e...
    

    我只想得到数字,忽略小数,所以它看起来像这样:

    df.column1:
    0 27467522
    1 NaN
    2 35314312
    3 1231
    

    我试着用regex来做:

    df['column1']=df['column1'].str.extract('[REGEX CODE]')
    

    但是我不习惯regex。我尝试了如下解决方案:

    df['column1']=df['column1'].str.extract('(.*?,)').str.extract('(\d+)')
    df['column1']=df['column1'].str.extract('(\s*,.*)').str.extract('(\d+)')
    

    但我没能把它弄好。 有人能帮忙吗?

    1 回复  |  直到 8 年前
        1
  •  2
  •   user3483203    8 年前

    使用 str.replace 然后 str.extract

    df.column1.str.replace('.', '').str.extract(r'(\d+)')
    
              0
    0  27467522
    1       NaN
    2  35314312
    3      1231
    

    小数在这里用逗号表示,因此通过替换句点并使用extract查找第一个匹配项,将匹配数字,忽略小数。