pandas筛选数值列和非数值列方式
pandas筛选数值列和非数值列
筛选数值类型的列
numeric_columns = df.select_dtypes(include=['number']).columns
df为dataframe类型的数据。
筛选非数值类型的列
non_numeric_columns = df.select_dtypes(exclude=['number']).columns.to_list()
含数值列就用include,不要数值列就用exclude。
Pandas常见筛选数据的五种方法其一逻辑筛选
Pandas的数据操作中,最基本的就是操作的筛选了,但是对新学员来说的这又是一个难点,因为方法比较多,不容易记。聊聊pandas中的一些常用的数据筛选操作。
逻辑筛选数据
切片([ ]),loc,iloc,这三种都是支持逻辑表达式的,选其中一种比较常用的,逻辑运算符 与或非(& | ~)any,all
展示使用的数据结构
import pandas as pd PATH = '/tmp/MSD0921.xlsx' dataframe = pd.read_excel(PATH,engine='openpyxl', nrows=50)
| SD1 | SD2 | SD3 | SD4 | SD5 | SD6 | SD7 | SD8 | |
|---|---|---|---|---|---|---|---|---|
| 0 | 4 | 7 | 2 | 1 | 2 | 6 | 7 | 6 |
| 1 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 |
| 2 | 1 | 7 | 1 | 1 | 1 | 6 | 6 | 6 |
| 3 | 6 | 6 | 3 | 2 | 2 | 2 | 2 | 2 |
| 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 258 | 1 | 5 | 2 | 1 | 1 | 7 | 7 | 6 |
| 259 | 1 | 7 | 7 | 4 | 2 | 1 | 7 | 1 |
| 260 | 1 | 3 | 5 | 4 | 5 | 5 | 5 | 6 |
| 261 | 1 | 3 | 5 | 5 | 5 | 5 | 3 | 2 |
| 262 | 1 | 7 | 7 | 7 | 7 | 7 | 7 | 7 |
1、筛选出某一列大于某一个数的所有数据,例如:SD1>=7
"""筛选出SD1列中大于等于7的数据""" dataframe[dataframe['SD1'] >= 7]

2、筛选出某一列大于或者小于另一列的输有数据,例如:SD1 < SD2
"""筛选出SD1列小于SD2列所有数据""" dataframe.loc[dataframe['SD1'] < dataframe['SD2']]

3、筛选出某些列的值大于或小于某些值的所有数据,例如:SD1 >6并且SD1<3,使用 &
"""筛选出SD1大于6,并且SD2小于3的所有数据""" dataframe.loc[(dataframe['SD1'] > 6) & ( dataframe['SD2'] < 3)]

4、筛选出某些列的值大于或小于某些值的所有数据,例如:SD1 >6或者SD1<3,使用 |
"""筛选出SD1小于6,或者SD2小于3的所有数据,并集""" dataframe.loc[(dataframe['SD1'] > 6) | ( dataframe['SD2'] < 3)]

注意:需要注意的是在进行或(|)、与(&)、非(~)运算时,各个独立逻辑表达式需要用括号括起来
除了上边的与或之外,pandas还提供了 all,any,对逻辑计算后的布尔值在进行判断,所有都为True,all才返回True,反之亦然,any满足其中之一即可。all,any可传参数axis,1为行方向,0为列方向。利用此方法可对整体数据逻辑判断。
5、筛选出某些列的值同时大于或同时小于某值的所有数据,例如SD1>6 SD2>6
"""筛选出SD1, SD2同时大于6的所有数据""" dataframe[(dataframe.loc[:,['SD1', 'SD2']] > 6).all(1)]

逻辑解读: dataframe.loc[:,['SD1', 'SD2']] > 6,这个逻辑计算的是SD1,SD2同时大于6返回的布尔值,逗号前的冒号表示所有行,返回的是False或者True的一个dataframe数据,整体在进行.all(1),操作返回的是SD1,SD2都为True的为True,否者为False所有行数。在使用切片 [ ],进行取数据。

总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Python遇到UnicodeEncodeError错误的解决方案
在使用Python处理从不同网页抓取的文本时,经常会遇到UnicodeEncodeError错误,这通常是因为Python默认使用ASCII编码,而当遇到超出ASCII编码范围(0 - 127)的字符时,就会抛出该错误,所以本文给大家介绍了一些Python遇到UnicodeEncodeError错误的解决方案2025-06-06
如何彻底解决python NameError:name '__file__' is not
这篇文章主要给大家介绍了关于如何彻底解决python NameError:name '__file__' is not defined的相关资料,文中通过图文将解决的办法介绍的非常详细,需要的朋友可以参考下2023-02-02
Python3.8 + Tkinter: Button设置image属性不显示的问题及解决方法
这篇文章主要介绍了Python3.8 + Tkinter: Button设置image属性不显示的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2021-08-08
解决webdriver.Chrome()报错:Message:''chromedriver'' executable n
这篇文章主要介绍了解决webdriver.Chrome()报错:Message:'chromedriver' executable needs to be in Path ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2019-06-06
python 读取yaml文件的两种方法(在unittest中使用)
这篇文章主要介绍了python 读取yaml文件的两种方法(在unittest中使用),帮助大家更好的理解和学习python,感兴趣的朋友可以了解下2020-12-12


最新评论