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 object.
I'd select the record where A value are integer or numeric to have:
A B
0 1 green
1 2 red
3 3 yellow
Thanks
We can use select_if() function to get numeric columns by calling the function with the dataframe name and isnumeric() function that will check for numeric columns.
Pandas str. isdigit() method is used to check if all characters in each string in series are digits. Whitespace or any other character occurrence in the string would return false. If the number is in decimal, then also false will be returned since this is a string method and '.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With