How to filter dataframe on basis of column datatype

Viewed 40

Let's say I have following dataframe, and want to filter/separate dataframe based on datatype of column value,

dataframe = 
Name | No_of_days
A    |   23
B    |   34
C    | 'not applicable'
D    | 'present'
E    |   12
F    |  'something'

expected1 = 
Name | No_of_days
A    |  23
B    |  34
E    |  12

expected2 =
Name | No_of_days
C    | 'not applicable'
D    | 'present'
F    |  'something'

I want to filter dataframe by column(No_of_days), where datatype is integer and string.

1 Answers

Use to_numeric with errors='coerce' - for not numeric are generated missing values, so possible test by Series.isna and filter in boolean indexing:

m = pd.to_numeric(df['No_of_days'], errors='coerce').isna()

expected1 = df[m]
expected2 = df[~m]
Related