使用“In”和“Not In”过滤 Pandas 数据框:更简单的解决方案
使用 Pandas 数据框时,通常有必要根据特定标准过滤数据。一个常见的要求是查找特定列与一组预定义值匹配或不匹配的行,类似于 SQL“IN”和“NOT IN”运算符。
替代合并-基于方法
传统上,一些用户采用基于合并的方法来实现这种过滤。虽然有效,但此方法被认为效率低且不必要地复杂。
使用 pd.Series.isin
理想的解决方案在于利用 pd.Series.isin 函数。它为“IN”和“NOT IN”过滤提供了简单的功能。
“IN”过滤
过滤特定列与中的任何值匹配的行提供的列表,使用:
something.isin(somewhere)
“不在”过滤
或者,要过滤列值与给定列表中的任何值都不匹配的行,请使用:
~something.isin(somewhere)
示例用法
考虑以下因素示例:
df = pd.DataFrame({'country': ['US', 'UK', 'Germany', 'China']}) countries_to_keep = ['UK', 'China'] df_in = df[df.country.isin(countries_to_keep)] df_not_in = df[~df.country.isin(countries_to_keep)] print(df_in) print(df_not_in)
输出:
country 1 UK 3 China country 0 US 2 Germany
如所示,pd.Series.isin 提供了一种简洁高效的方法来过滤 Pandas 数据帧。它消除了对复杂的基于合并的方法的需要,使过滤过程更简单、更高效。
以上是如何使用'IN”和'NOT IN”运算符有效过滤 Pandas DataFrame?的详细内容。更多信息请关注PHP中文网其他相关文章!