pandas is in和not in的使用说明

  • Post category:Python

Pandas中isin和notin的使用说明

isin是一种用于Series和DataFrame的Pandas方法,它可用于查找序列中的值是否包含在另一个序列中。而notin是isin操作的补集操作,它用于查找序列中的值是否不在另一个序列中。

使用isin和notin的基本语法

首先,让我们看看isin和notin的基本语法:

Series.isin(values)
Series.notin(values)

Series可以是Pandas中的Series对象,DataFrame中的列或多个列。values可以是单个值、列表、元组或Series。当values是列表、元组或Series时,isin将返回包含True或False的一个Series对象,以指示Series中的每个元素是否在values中。而notin操作的返回结果是表示series中每个元素是否不在values中的True/False序列。

使用isin和notin进行数据筛选的示例

假设我们有一个包含商品信息的DataFrame,其中包含商品名称、类别和价格三列,我们现在想要筛选出价格在一定范围内的商品信息。我们可以使用isin来实现这一目的。比方说,我们希望找到所有价格在10-20之间的商品,可以这样操作:

import pandas as pd

# 创建示例数据
data = {'商品名称': ['可乐', '矿泉水', '饼干', '零食', '牛奶'], '类别': ['饮品', '饮品', '食品', '食品', '饮品'], '价格': [13, 8, 15, 18, 11]}
df = pd.DataFrame(data)

# 筛选价格在10-20之间的商品
price_filter = df['价格'].isin(range(10, 21))   # 返回一个由True/False组成的Series对象
selected_data = df[price_filter]
print(selected_data)

输出结果为:

  商品名称  类别  价格
0   可乐  饮品  13
2   饼干  食品  15
4   牛奶  饮品  11

以上代码中,我们使用了isin来判断价格是否在10-20之间,然后使用返回值对原始的DataFrame进行了筛选,得到了符合我们筛选条件的数据。

我们还可以使用notin操作进行类似的筛选。比如,我们可以找到所有非饮品类别的商品信息,可以这样实现:

import pandas as pd

# 创建示例数据
data = {'商品名称': ['可乐', '矿泉水', '饼干', '零食', '牛奶'], '类别': ['饮品', '饮品', '食品', '食品', '饮品'], '价格': [13, 8, 15, 18, 11]}
df = pd.DataFrame(data)

# 筛选非饮品类别的商品
category_filter = df['类别'].notin(['饮品'])   # 返回一个由True/False组成的Series对象
selected_data = df[category_filter]
print(selected_data)

输出结果为:

  商品名称  类别  价格
2   饼干  食品  15
3   零食  食品  18

以上代码中,我们使用了notin来判断类别是否非饮品,然后使用返回值对原始的DataFrame进行了筛选,得到了符合我们筛选条件的数据。

总结

由上面的示例可以看出,在Pandas中,isin和notin是非常实用的数据筛选工具,可以帮助我们方便地筛选需要的数据。在使用前,我们需要明确要筛选的数据列,以及筛选条件中的取值范围和规则,才能按照自己的要求进行数据的筛选。