Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to drop DataFrame columns based on dtype

Tags:

python

pandas

I've got a pandas dataframe and I'm trying to drop all the object fields from so that I'm left with only numeric.

I've been trying to write a for loop to do this task, as I'm likely going to need to do it over and over again with different data.

For some reason I can't get it working. Below is what I've did so far

for cols in data:
    if data.values.type == object:
        numdata = data.drop(axis=1, inplace=True)

The error I get is:

AttributeError Traceback (most recent call last) in () 1 for cols in data: ----> 2 if data.values.type == object: 3 numdata = data.drop(axis=1, inplace=True)

AttributeError: 'numpy.ndarray' object has no attribute 'type'

I am a newb and for some reason I can't get the for loop and if statement logic to stick in my head.

like image 753
Nick Duddy Avatar asked Feb 15 '18 22:02

Nick Duddy


People also ask

How do you select columns based on Dtype pandas?

Pandas Select columns based on their data typePandas dataframe has the function select_dtypes , which has an include parameter. Specify the datatype of the columns which you want select using this parameter. This can be useful to you if you want to select only specific data type columns from the dataframe.

How do I drop a column in pandas based on index?

Pandas Drop Multiple Columns By Index You can use df. columns[[index1, index2, indexn]] to identify the list of column names in that index position and pass that list to the drop method. Note that an index is 0 based. Use 0 to delete the first column and 1 to delete the second column and so on.

How do I drop a column from a Pandas DataFrame?

Using the del command to drop coloumn To drop a single column in a pandas dataframe, you can use the del command which is inbuilt in python.

How do I DELETE columns from a data frame?

Deleting rows and columns (drop) To delete rows and columns from DataFrames, Pandas uses the “drop” function. To delete a column, or multiple columns, use the name of the column(s), and specify the “axis” as 1.


1 Answers

You can use select_dtypes to exclude columns of a particular type.

import pandas as pd

df = pd.DataFrame({'x': ['a', 'b', 'c'], 'y': [1, 2, 3], 'z': ['d', 'e', 'f']})

df = df.select_dtypes(exclude=['object'])
print(df)
like image 198
roganjosh Avatar answered Oct 04 '22 03:10

roganjosh