I have a dataframe that contains over 200 columns. I need to create two lists that group columns by type. Rather than creating this list manually I tried different methods that did not work:
JavaScript
x
2
1
numeric_transformer = df.dtypes == 'int64'
2
or:
JavaScript
1
3
1
numeric_transformer = df.apply(lambda x: x if df.dtypes == 'int64' or 'float64' else
2
None, axis=1)
3
or :
JavaScript
1
3
1
categorical_transformer = df.apply(lambda x: x if df[df.dtypes == 'object'] else None,
2
axis=1)
3
Can anyone help me solve this problem?
Advertisement
Answer
I believe that for this question you can use df.select_dtypes like this :
JavaScript
1
4
1
numeric_transformer = df.select_dtypes(exclude='object').columns #exclude object types
2
3
categorical_transfomer = df.select_dtypes(include='object').columns
4
Another way to do this would be using the list comprehension :
JavaScript
1
4
1
numeric_transformer = [column for column in df.columns if (df.dtypes[column] == 'float') or (df.dtypes[column] == 'int')]
2
3
categorical_transformer = [column for column in df.columns if df.dtypes[column] == 'object']
4