首页 > 后端开发 > Python教程 > 如何在Pandas中高效执行SQL的IN和NOT IN过滤?

如何在Pandas中高效执行SQL的IN和NOT IN过滤?

Susan Sarandon
发布: 2024-12-20 20:05:17
原创
311 人浏览过

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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板