Pandas_Select_Data_isin
Series 对象可以使用isin()方法,返回一个布尔数组,然后再选择数据。
import pandas as pd
import numpy as np
iris = pd.read_csv('iris.csv')
iris.head(2)
out:
sepal_length sepal_width petal_length petal_width species
0 5.1 3.5 1.4 0.2 setosa
1 4.9 3.0 1.4 0.2 setosa
iris.species.unique()
out:
array(['setosa', 'versicolor', 'virginica'], dtype=object)
iris[iris.species.isin(['setosa','virginica'])]
out:
sepal_length sepal_width petal_length petal_width species
0 5.1 3.5 1.4 0.2 setosa
1 4.9 3.0 1.4 0.2 setosa
2 4.7 3.2 1.3 0.2 setosa
3 4.6 3.1 1.5 0.2 setosa
4 5.0 3.6 1.4 0.2 setosa
... ... ... ... ... ...
145 6.7 3.0 5.2 2.3 virginica
146 6.3 2.5 5.0 1.9 virginica
147 6.5 3.0 5.2 2.0 virginica
148 6.2 3.4 5.4 2.3 virginica
149 5.9 3.0 5.1 1.8 virginica
100 rows × 5 columns
iris[iris.index.isin(list(range(0,100,2)))].head()
out:
sepal_length sepal_width petal_length petal_width species
0 5.1 3.5 1.4 0.2 setosa
2 4.7 3.2 1.3 0.2 setosa
4 5.0 3.6 1.4 0.2 setosa
6 4.6 3.4 1.4 0.3 setosa
8 4.4 2.9 1.4 0.2 setosa
DataFrame也有一个isin()方法。调用时isin,将一组值作为数组或字典传递。如果values是一个数组,则isin返回与原始DataFrame形状相同的布尔数据框,并在元素序列中的任何位置使用True。
values = [5.1, 3.4, 1.3, 'setosa']
iris.head().isin(values)
out:
sepal_length sepal_width petal_length petal_width species
0 True False False False True
1 False False False False True
2 False False True False True
3 False False False False True
4 False False False False True
通常,需要将某些值与某些列匹配。只需将值设置dict为键为列的位置,值即为要检查的项目列表
values = {'sepal_length': [5.1, 3.4], 'species': ['setosa', 'virginica']}
iris.head().isin(values)
out:
sepal_length sepal_width petal_length petal_width species
0 True False False False True
1 False False False False True
2 False False False False True
3 False False False False True
4 False False False False True