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

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

Susan Sarandon
Susan Sarandon原創
2024-12-20 20:05:17313瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn