DataFrame.isin (values) проверяет, содержится ли каждый элемент в DataFrame в значениях.
Синтаксис
DataFrame.isin(values)
Где, значениями могут быть Iterable, DataFrame, Series или dict.
isin() возвращает DataFrame с логическими значениями, показывающими, содержится ли каждый элемент в DataFrame в значениях.
Пример 1: с Iterable
В этом примере мы применим DataFrame.isin() с диапазоном, то есть Iterable. Значения DataFrame, которые соответствуют значениям в диапазоне, выводят True, а другие – False в соответствующем индексе.
import pandas as pd
#initialize dataframe
df = pd.DataFrame({'a': [2, 4], 'b': [2, 0]})
#check if the values of df are in the range(1,6)
out = df.isin(range(1,6))
print('DataFrame\n-----------\n',df)
print('\nDataFrame.isin(range(1,6))\n-----------\n',out)
Вывод:
DataFrame
-----------
a b
0 2 2
1 4 0
DataFrame.isin(range(1,6))
-----------
a b
0 True True
1 True False
Ясно, что 2,4 находятся в диапазоне (1,6), а 0 – нет. Следовательно, для позиции элемента 0 DataFrame.isin() возвращает False.
Пример 2: с Series
В этом примере мы применим DataFrame.isin() с Series. Значения DataFrame, которые соответствуют значениям вместе с индексом, возвращают True, а другие возвращают False для соответствующего индекса.
import pandas as pd
#initialize dataframe
df = pd.DataFrame({'a': [2, 4], 'b': [2, 0]})
#series
s = pd.Series([2, 0])
#check if the values of df are in the range(1,6)
out = df.isin(s)
print('DataFrame\n-----------\n',df)
print('\nSeries\n-----------\n',s)
print('\nDataFrame.isin(series)\n-----------\n',out)
Вывод:
D:\>python example.py
DataFrame
-----------
a b
0 2 2
1 4 0
Series
-----------
0 2
1 0
dtype: int64
DataFrame.isin(series)
-----------
a b
0 True True
1 False True
Ясно, что при индексе 0,2,2 DataFrame соответствует 2 из Series, но при индексе 1 первый элемент 4 не соответствует.
Пример 3: с DataFrame
В этом примере мы применим DataFrame.isin() с другим. Значения DataFrame, которые соответствуют значениям вместе с индексом, возвращают True, а другие возвращают False для соответствующего индекса.
import pandas as pd
#initialize dataframe
df = pd.DataFrame({'a': [2, 4], 'b': [2, 0]}, index=['i1', 'i2'])
#series
df1 = pd.DataFrame({'a': [2, 4], 'b': [2, 3]}, index=['i1', 'i3'])
#check if the values of df are in the range(1,6)
out = df.isin(df1)
print('DataFrame\n-----------\n',df)
print('\nDataFrame df1\n-----------\n',df1)
print('\nDataFrame.isin(df1)\n-----------\n',out)
Вывод:
DataFrame
-----------
a b
i1 2 2
i2 4 0
DataFrame df1
-----------
a b
i1 2 2
i3 4 3
DataFrame.isin(df1)
-----------
a b
i1 True True
i2 False False
Индекс i2 не совпадает с индексом в df1. Следовательно, эта строка возвращает все ложные значения.
Пример 4: со словарем
В этом примере мы применим DataFrame.isin() со словарем. Ключи словаря считаются столбцами, а соответствующие значения считаются значениями столбцов. isin (dict) возвращает True для тех значений, где ключи dict совпадают с именем столбца, а значения словаря совпадают со значениями столбца DataFrame.
import pandas as pd
#initialize dataframe
df = pd.DataFrame({'a': [2, 4], 'b': [2, 0]}, index=['i1', 'i2'])
#dictionary
dict = {'a': [2, 4]}
#DataFrame.isin(dict)
out = df.isin(dict)
print('DataFrame\n-----------\n',df)
print('\nDictionary\n-----------\n',dict)
print('\nDataFrame.isin(dict)\n-----------\n',out)
Вывод:
DataFrame
-----------
a b
i1 2 2
i2 4 0
Dictionary
-----------
{'a': [2, 4]}
DataFrame.isin(dict)
-----------
a b
i1 True False
i2 True False
Индекс i2 не совпадает с индексом в df1. Следовательно, эта строка возвращает все ложные значения.