pandas篩選數(shù)值列和非數(shù)值列方式
pandas篩選數(shù)值列和非數(shù)值列
篩選數(shù)值類型的列
numeric_columns = df.select_dtypes(include=['number']).columns
df為dataframe類型的數(shù)據(jù)。
篩選非數(shù)值類型的列
non_numeric_columns = df.select_dtypes(exclude=['number']).columns.to_list()
含數(shù)值列就用include,不要數(shù)值列就用exclude。
Pandas常見篩選數(shù)據(jù)的五種方法其一邏輯篩選
Pandas的數(shù)據(jù)操作中,最基本的就是操作的篩選了,但是對新學(xué)員來說的這又是一個難點(diǎn),因為方法比較多,不容易記。聊聊pandas中的一些常用的數(shù)據(jù)篩選操作。
邏輯篩選數(shù)據(jù)
切片([ ]),loc,iloc,這三種都是支持邏輯表達(dá)式的,選其中一種比較常用的,邏輯運(yùn)算符 與或非(& | ~)any,all
展示使用的數(shù)據(jù)結(jié)構(gòu)
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、篩選出某一列大于某一個數(shù)的所有數(shù)據(jù),例如:SD1>=7
"""篩選出SD1列中大于等于7的數(shù)據(jù)""" dataframe[dataframe['SD1'] >= 7]

2、篩選出某一列大于或者小于另一列的輸有數(shù)據(jù),例如:SD1 < SD2
"""篩選出SD1列小于SD2列所有數(shù)據(jù)""" dataframe.loc[dataframe['SD1'] < dataframe['SD2']]

3、篩選出某些列的值大于或小于某些值的所有數(shù)據(jù),例如:SD1 >6并且SD1<3,使用 &
"""篩選出SD1大于6,并且SD2小于3的所有數(shù)據(jù)""" dataframe.loc[(dataframe['SD1'] > 6) & ( dataframe['SD2'] < 3)]

4、篩選出某些列的值大于或小于某些值的所有數(shù)據(jù),例如:SD1 >6或者SD1<3,使用 |
"""篩選出SD1小于6,或者SD2小于3的所有數(shù)據(jù),并集""" dataframe.loc[(dataframe['SD1'] > 6) | ( dataframe['SD2'] < 3)]

注意:需要注意的是在進(jìn)行或(|)、與(&)、非(~)運(yùn)算時,各個獨(dú)立邏輯表達(dá)式需要用括號括起來
除了上邊的與或之外,pandas還提供了 all,any,對邏輯計算后的布爾值在進(jìn)行判斷,所有都為True,all才返回True,反之亦然,any滿足其中之一即可。all,any可傳參數(shù)axis,1為行方向,0為列方向。利用此方法可對整體數(shù)據(jù)邏輯判斷。
5、篩選出某些列的值同時大于或同時小于某值的所有數(shù)據(jù),例如SD1>6 SD2>6
"""篩選出SD1, SD2同時大于6的所有數(shù)據(jù)""" dataframe[(dataframe.loc[:,['SD1', 'SD2']] > 6).all(1)]

邏輯解讀: dataframe.loc[:,['SD1', 'SD2']] > 6,這個邏輯計算的是SD1,SD2同時大于6返回的布爾值,逗號前的冒號表示所有行,返回的是False或者True的一個dataframe數(shù)據(jù),整體在進(jìn)行.all(1),操作返回的是SD1,SD2都為True的為True,否者為False所有行數(shù)。在使用切片 [ ],進(jìn)行取數(shù)據(jù)。

總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python遇到UnicodeEncodeError錯誤的解決方案
在使用Python處理從不同網(wǎng)頁抓取的文本時,經(jīng)常會遇到UnicodeEncodeError錯誤,這通常是因為Python默認(rèn)使用ASCII編碼,而當(dāng)遇到超出ASCII編碼范圍(0 - 127)的字符時,就會拋出該錯誤,所以本文給大家介紹了一些Python遇到UnicodeEncodeError錯誤的解決方案2025-06-06
基于Python實(shí)現(xiàn)簡易文檔格式轉(zhuǎn)換器
這篇文章主要介紹了基于Python和PyQT5實(shí)現(xiàn)簡易的文檔格式轉(zhuǎn)換器,支持.txt/.xlsx/.csv格式的轉(zhuǎn)換。感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2021-12-12
如何徹底解決python?NameError:name?'__file__'?is?not?
這篇文章主要給大家介紹了關(guān)于如何徹底解決python?NameError:name?'__file__'?is?not?defined的相關(guān)資料,文中通過圖文將解決的辦法介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02
Python中讀寫壓縮數(shù)據(jù)文件的方法完全指南
在現(xiàn)代數(shù)據(jù)密集型應(yīng)用中,壓縮文件處理是每個Python開發(fā)者必須掌握的關(guān)鍵技能,本文將深入解析Python壓縮文件讀寫的相關(guān)方法,有需要的小伙伴可以了解下2025-09-09
Python3.8 + Tkinter: Button設(shè)置image屬性不顯示的問題及解決方法
這篇文章主要介紹了Python3.8 + Tkinter: Button設(shè)置image屬性不顯示的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下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中使用),幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下2020-12-12

