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中文网其他相关文章!