首頁 > 後端開發 > Python教學 > 如何在Pandas中高效率執行SQL的IN和NOT IN過濾?

如何在Pandas中高效率執行SQL的IN和NOT IN過濾?

Susan Sarandon
發布: 2024-12-20 20:05:17
原創
310 人瀏覽過

How Can I Efficiently Perform SQL's IN and NOT IN Filtering in Pandas?

Pandas 中物件導向的類似SQL 的過濾

過濾Pandas 資料幀是資料分析中的一項關鍵任務,並了解如何有效利用類似SQL 的運算子可以大大簡化這個過程。具體來說,IN 和 NOT IN 運算子廣泛用於根據成員資格條件選擇行。

SQL 的IN 和NOT IN 的Pandas 等效項

實作等效於Pandas 中SQL 的IN 運算符,您可以在Series 上利用isin()方法。此方法檢查 Series 中的每個元素是否包含在指定的清單或集合中。例如,要根據要包含的國家/地區清單過濾資料框:

df = pd.DataFrame({'country': ['US', 'UK', 'Germany', 'China']})
countries_to_keep = ['UK', 'China']
df[df['country'].isin(countries_to_keep)]
登入後複製

這將傳回一個資料框,其中僅包含country_to_keep 清單中存在國家/地區列值的行。

要執行與SQL 的NOT IN 等效的操作,只需使用~ 否定isin() 方法即可運算符:

df[~df['country'].isin(countries_to_keep)]
登入後複製

這將產生一個資料框,排除國家/地區列值與指定清單相符的行。

範例

考慮以下資料框:

df = pd.DataFrame({'country': ['US', 'UK', 'Germany', 'China']})
countries_to_keep = ['UK', 'China']
登入後複製

只選擇國家/地區所在的行country_to_keep:

df_filtered_in = df[df['country'].isin(countries_to_keep)]
登入後複製

這將導致:
    country
1        UK
3     China
登入後複製

選擇國家/地區不在country_to_keep中的行:
df_filtered_not_in = df[~df['country'].isin(countries_to_keep)]
登入後複製

這將產生:
    country
0        US
2   Germany
登入後複製

結論

結論

結論結論Pandas中的 isin() 方法提供了一種方便且高效的方法來實現 IN 和 NOT IN 風格的過濾,提供了強大的功能用於根據成員資格標準操作資料框的工具。

以上是如何在Pandas中高效率執行SQL的IN和NOT IN過濾?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板