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是非常实用的数据筛选工具,可以帮助我们方便地筛选需要的数据。在使用前,我们需要明确要筛选的数据列,以及筛选条件中的取值范围和规则,才能按照自己的要求进行数据的筛选。