首頁>技術>

布林索引是pandas中非常常用的一種用來過濾資料的操作方法。布林運算子與、或、非的對應關係為:

與 &或 |非 ~

下面我們透過例項演示一下布林索引的基本用法。

本文所使用的開發環境:Windows 7 + Python 2.7.17 + PyCharm Community Edition 2016.1.5

程式所使用的演示資料如下所示:

程式的第27行,我們是使用布林索引選取所有貸款餘額大於0的行。由於條件比較簡單,我們直接使用python的比較運算子即可。

程式的執行結果如下所示:

與原始資料對比我們可以看出,本次篩選我們只選取了貸款餘額(萬)列大於0的資料。

如果篩選條件不止一個,我們也可以使用邏輯運算子。邏輯“與”使用運算子 & 實現。程式的第30行,我們把篩選條件變更為貸款餘額大於0元,並且發放金額大於1850萬元。

在這裡我們要注意,由於運算子優先順序的問題,為了保證條件被正確計算,我們要給兩個條件都分別加上圓括號。

和上面的資料對比,發放金額大於1850的資料也被篩選掉了。

下面我們看一下邏輯“或”的用法,邏輯“或”使用的是運算子 | 來實現。程式的第33行,我們選取了貸款餘額大於1300萬,或者發放金額大於1850萬的資料。

透過程式的執行結果,我們可以看出,只要是符合這兩個條件中任意一個的資料行,就會被篩選出來。紅線代表滿足條件的數值列。

邏輯“非”使用的運算子是 ~ 它在鍵盤的左上角,Esc鍵的下方。使用邏輯“非”的時候,也要注意運算子的優先順序。程式的第36行,我們選取的是貸款餘額“不是”大於0的資料,換句話說選取的是貸款餘額小於等於0的資料。

由於貸款餘額沒有小於0的資料,所以篩選出的是貸款餘額等於0的資料,程式的執行結果如下:

我們還可以使用map函式,構造一些更復雜的條件,程式的第39行,我們演示使用find函式篩選出“是否結清”列中包含“已”字的資料。

在lambda函式中引數x代表“是否結清”列中的每行資料。find函式用於查詢資料中的“已”字。如果返回值不是-1,代表查詢到了。map函式返回值為“True”的時候,布林索引將把資料展示出來。為了方便閱讀原始碼,我們還可以把條件獨立出來變成一個變數,例如:criterion1。程式的執行結果如下:

之前的所有例子,我們都是選取DataFrame的所有列。最後我們再結合之前的條件演示一下,如何選取特定的列。程式的第43行,我們在複用criterion1的前提下,要求只選取客戶名稱, 發放金額(萬), 是否結清,這三列。

程式的執行結果如下:

15
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 5G(NSA)架構RRC中有關NR訊息內容