成员运算 isin()
1. Series类型对象
对于Series类型的对象,成员判断可以用isin方法:
>>> df = pd.DataFrame([["Larry",12,40,140],["Henry",13,50,150],["Jerry",15,60,171]])
>>> df. columns = ["name","age","weight","height"])
传入一个列表
>>> df["name"].isin(["a","Larry"])
0 True
1 False
2 False
Name: name, dtype: bool # 运行之后得到一个Series类型对象
2. DataFrame类型的对象
同样使用isin成员运算,可以看到是对DataFrame的每一列进行成员判断,最终得到一个DataFrame对象。
>>> df.isin(["a","Larry"])
name age weight height
0 True False False False
1 False False False False
2 False False False False
上面是传入一个列表进行成员判断,也可以传入一个字典进行判断:
>>> df.isin ({"name":["Henry","Logan","Jess"],"height":[40,50]})
name age weight height
0 False False False False
1 True False False False
2 False False False False
字典中的键如果是DataFrame的列标签,则会判断DataFrame中相应列的每一个值是否存在于,字典的键所对应的值,存在则返回True
如果DataFrame的某一列不在字典的键中,那么最终结果中该列的所有值均为False。
成员运算取反 ~df.isin(other)
没有notin函数,取反就在前面加取反符号~, pandas和numpy中经常用此符号表示条件取反。
应用:数据过滤
>>> df.loc[~df["name"].isin(["a","Larry"])]
这个运行的结果和下面的运行结果相同
1. 传一个布尔数组,即为对记录(也就是行)进行筛选
>>> df[[False,True,True]]
2. 省略了loc:
>>> df[~df["name"].isin(["a","Larry"])]
上面三种方式最终的运行结果都是:
name age weight height
1 Henry 13 50 150
2 Jerry 15 60 171
网友评论