Pandas Extract Number from String

77,029

Solution 1

Give it a regex capture group:

df.A.str.extract('(\d+)')

Gives you:

0      1
1    NaN
2     10
3    100
4      0
Name: A, dtype: object

Solution 2

To answer @Steven G 's question in the comment above, this should work:

df.A.str.extract('(^\d*)')

Solution 3

U can replace your column with your result using "assign" function:

df = df.assign(A = lambda x: x['A'].str.extract('(\d+)'))
Share:
77,029
Dance Party
Author by

Dance Party

Updated on October 30, 2020

Comments

  • Dance Party
    Dance Party over 3 years

    Given the following data frame:

    import pandas as pd
    import numpy as np
    df = pd.DataFrame({'A':['1a',np.nan,'10a','100b','0b'],
                       })
    df
    
        A
    0   1a
    1   NaN
    2   10a
    3   100b
    4   0b
    

    I'd like to extract the numbers from each cell (where they exist). The desired result is:

        A
    0   1
    1   NaN
    2   10
    3   100
    4   0
    

    I know it can be done with str.extract, but I'm not sure how.