달나라 노트

Python Pandas : isin (각각의 요소가 DataFrame 또는 Series에 존재하는지 파악) 본문

Python/Python Pandas

Python Pandas : isin (각각의 요소가 DataFrame 또는 Series에 존재하는지 파악)

CosmosProject 2021. 1. 7. 11:05
728x90
반응형

 

 

 

Pandas에서는 어떤 list에 존재하는 요소가 대상 DataFrame이나 Series에 존재 하는지를 True(존재), False(존재안함)로 반환해주는 isin method를 제공합니다.

 

import pandas as pd

list_test = [1, 2, 3, 4, 5]

seri_test = pd.Series(list_test)
print(seri_test)
print(type(seri_test))


- Output
0    1
1    2
2    3
3    4
4    5
dtype: int64
<class 'pandas.core.series.Series'>

먼저 test용 Series를 만듭시다.

 

 

 

 

 

seri_test_1 = seri_test.isin([1, 3, 5])
print(seri_test_1)
print(type(seri_test_1))


- Output
0     True
1    False
2     True
3    False
4     True
dtype: bool
<class 'pandas.core.series.Series'>

테스트로 만든 Series에 isin을 적용했습니다.

isin의 인자로서는 list [1, 3, 5]를 전달했습니다.

즉 위 코드의 뜻은 seri_test라는 Series에 존재하는 모든 요소를 대상으로 1, 3, 5라는 값은 True를 1, 3, 5 이외의 값은 False를 반환합니다.

따라서 index = 0, 2, 4에 해당하는 값은 각각 1, 3, 5이므로 index = 0, 2, 4는 True값이며,

index = 1, 3에 해당하는 값은 1 또는 3 또는 5가 아니므로 False가 반환된 것을 알 수 있습니다.

 

그리고 isin을 적용한 seri_test는 Series였으므로 반환된 값도 Seires입니다.

 

 

 

 

 

 

 

import pandas as pd

dict_test = {
    'col1': [1, 2, 3, 4, 5],
    'col2': ['a', 'b', 'c', 'd', 'e']
}

df_test = pd.DataFrame(dict_test)
print(df_test)
print(type(df_test))


- Output
   col1 col2
0     1    a
1     2    b
2     3    c
3     4    d
4     5    e
<class 'pandas.core.frame.DataFrame'>

이제는 DataFrame에 적용시키기 위해 테스트용 DataFrame을 만들어봅시다.

 

 

 

 

 

 

isin_test_1 = df_test.isin([1, 2, 'a', 'c', 'z'])
print(isin_test_1)
print(type(isin_test_1))


- Output
    col1   col2
0   True   True
1   True  False
2  False   True
3  False  False
4  False  False
<class 'pandas.core.frame.DataFrame'>

df_test라는 DataFrame 전체에 isin을 적용시켰습니다.

이런 경우 DataFrame에 있는 모든 각각의 값에 대해 주어진 list([1, 2, 'a', 'c', 'z']) 속에 존재하는 값인지를 체크합니다.

DataFrame에 isin을 적용했으니 리턴되는 결과도 DataFrame이며,

Output을 보면 isin에 주어진 list 속 값에 포함되는 위치만 True로 표시되었음을 알 수 있습니다.

 

 

 

 

 

 

 

isin_test_2 = df_test['col2'].isin(['b', 'd'])
print(isin_test_2)
print(type(isin_test_2))


- Output
0    False
1     True
2    False
3     True
4    False
Name: col2, dtype: bool
<class 'pandas.core.series.Series'>

DataFrmae에서 하나의 column만을 Series로 추출하여 isin을 적용시킬 수도 있습니다.

이 경우 당연히 return값도 Series입니다.

 

 

 

 

728x90
반응형
Comments