Python数据处理从零开始----第二章(pandas)(十一)通过列属性对列进行筛选

本文主要目的是通过列属性进行列挑选,比如在同一个数据框中,有的列是整数类的,有的列是字符串列的,有的列是数字类的,有的列是布尔类型的。假如我们需要挑选或者删除属性为整数类的列,就可能需要用到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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券