Pandas select only numeric or integer field from dataframe

后端 未结 4 1793
栀梦
栀梦 2021-01-11 19:17

I have this Pandas dataframe (df):

     A    B
0    1    green
1    2    red
2    s    blue
3    3    yellow
4    b    black

A type is obje

4条回答
  •  囚心锁ツ
    2021-01-11 19:39

    Call apply on the dataframe (note the double square brackets df[['A']] rather than df['A']) and call the string method isdigit(), we then set param axis=1 to apply the lambda function row-wise. What happens here is that the index is used to create a boolean mask.

    In [66]:
    df[df[['A']].apply(lambda x: x[0].isdigit(), axis=1)]
    Out[66]:
           A       B
    Index           
    0      1   green
    1      2     red
    3      3  yellow
    

    Update

    If you're using a version 0.16.0 or newer then the following will also work:

    In [6]:
    df[df['A'].astype(str).str.isdigit()]
    
    Out[6]:
       A       B
    0  1   green
    1  2     red
    3  3  yellow
    

    Here we cast the Series to str using astype and then call the vectorised str.isdigit

    Also note that convert_objects is deprecated and one should use to_numeric for the latest versions 0.17.0 or newer

提交回复
热议问题