本文主要目的是通过列属性进行列挑选,比如在同一个数据框中,有的列是整数类的,有的列是字符串列的,有的列是数字类的,有的列是布尔类型的。假如我们需要挑选或者删除属性为整数类的列,就可能需要用到pandas.DataFrame.select_dtypes函数功能
该函数的主要格式是:DataFrame.select_dtypes(include = None,exclude = None),返回DataFrame列的子集。
include,exclude:选择要包含/排除的dtypes或字符串。必须至少提供其中一个参数。
subset:DataFrame,包含或者排除dtypes的的子集
要选取所有数字类的列,请使用np.number或'number' 要选取字符串的列,必须使用‘object’ 要选择日期时间,请使用np.datetime64,'datetime'或'datetime64' 要选取所有属性为‘类’的列,请使用“category”
import pandas as pd
import numpy as np
df = pd.DataFrame({'a': [1, 2] * 3,
'b': [True, False] * 3,
'c': [1.0, 2.0] * 3,
'e' : ['asian','white','black','white','asian','white'] ,
'd' :['low','low','low','median','high','high']})
df['d'] = df['d'].astype('category')
df
Out[46]:
a b c e d
0 1 True 1.0 asian low
1 2 False 2.0 white low
2 1 True 1.0 black low
3 2 False 2.0 white median
4 1 True 1.0 asian high
5 2 False 2.0 white high
我们构建了一个数据框,每一列的属性均不同。
a列为‘integer’数字类型, b列为‘bool’布尔类型, c列为‘数字’类型, d列为‘category’分类类型, e列为‘object’字符串类型
df.select_dtypes(include='bool')
Out[48]:
b
0 True
1 False
2 True
3 False
4 True
5 False
df.select_dtypes(include=['float64'])
Out[49]:
c
0 1.0
1 2.0
2 1.0
3 2.0
4 1.0
5 2.0
df.select_dtypes(include=['number'])
Out[50]:
a c
0 1 1.0
1 2 2.0
2 1 1.0
3 2 2.0
4 1 1.0
5 2 2.0
df.select_dtypes(include=['category'])
Out[51]:
d
0 low
1 low
2 low
3 median
4 high
5 high
df.select_dtypes(include=['integer'])
Out[52]:
a
0 1
1 2
2 1
3 2
4 1
5 2
df.select_dtypes(include=['object'])
Out[53]:
e
0 asian
1 white
2 black
3 white
4 asian
5 white
df.select_dtypes(exclude=['float64'])
Out[55]:
a b e d
0 1 True asian low
1 2 False white low
2 1 True black low
3 2 False white median
4 1 True asian high
5 2 False white high