pandas中Isin怎么用
pandas中isin()是一种用于检查值是否存在于序列中的方法。因为pandas是通过numpy实现的,所以isin()的用法类似于numpy中的isin()方法,但是pandas中的isin()方法更加灵活和适用于数据操作。
isin()方法的语法如下:
pandas.isin(values)
其中:
- values参数可以是列表、元组、Series或DataFrame。
- 方法返回值是一个布尔类型的Series或DataFrame。
接下来,我们将重点介绍如何在pandas中使用isin()方法。
## 检查值是否在Series中
首先,我们可以检查一个值是否存在于Series中,通过以下代码:
import pandas as pd s = pd.Series([10, 20, 30, 40, 50]) print(s.isin([10]))
输出结果如下:
0 True 1 False 2 False 3 False 4 False dtype: bool
在这个示例中,isin()方法被用来查找值10是否在Series s中。方法输出是一个boolean类型Series,其中索引是从s Series中取得的所有元素,并且 bool值表示索引位置对应的元素是否包含在isin()方法的参数中。如果值包含在isin方法的参数中,则对应索引位置bool类型的值为True,否则为False。
## 检查值是否在DataFrame中
isin()方法同样可以在DataFrame中使用,如下所示:
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': ['a', 'b', 'c']})
print(df.isin({'A': [1, 3], 'B': ['a', 'd']}))
输出结果如下:
A B
0 True True
1 False False
2 True False
在这个DataFrame中,列‘A’和列‘B’分别包含数字和字符串值。isin()方法的参数是一个字典,其中列名作为键,需要检查的值作为键值。方法输出是一个DataFrame,其中列会有相同数量的行,行数等于df数据框中的数据的总数。输出DataFrame的行和列的bool值分别表示数据框中的每个值是是否包含在isin()方法的字典参数中。那么,输出DataFrame的行列值就是以下逻辑:
其中,值k表示数据框中的每个值的行列位置。如果值属于参数中指定的列和其对应的值,则为True,否则为False。
## 在数据框中检查一个Series中的值
isin()还可以用于检查一个Series中的值是否存在于一个数据框中的列中。下面是一个示例:
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': ['a', 'b', 'c']})
s = pd.Series(['a', 'c'])
print(df.isin({'B': s}))
输出结果如下:
A B
0 False True
1 False False
2 False True
在这个示例中,isin()方法被用来检查Series s中的值是否存在于列B中。方法输出是一个DataFrame,其中列和行与数据框相同。可以看到,bool值是通过比较与s Series中的值相匹配的数据框df中的列进行比较得出的。
## 使用isin()方法将列计算到数据框
isin()方法还可以用于将True和False值计入数据框的新列。下面是一个示例:
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': ['a', 'b', 'c']})
df['C'] = df['B'].isin(['b', 'c'])
print(df)
输出结果如下:
A B C 0 1 a False 1 2 b True 2 3 c True
在这个示例中,isin()方法被用来检查数据框df中的列B中的每个值是否包含在isin()方法的参数中。然后,结果被写入到数据框新的列C中。值b和c在列C中计为True,而值a计为False。
我们在pandas中使用isin()方法时还有其他的用例和细节,上述示例仅涵盖了一些基础的用例。在实际使用中,请根据要实现的目标来使用isin()方法。
