본문 바로가기
판다스/판다스 팁

[pandas] set과 frozenset의 차이

by 김판다t 2023. 8. 7.

둘다 집합의 개념이고 중복된 value를 허용하지 않는 공통점이 있다

 

다만 set은 mutable하고 frozenset은 immutable하다. (이 관계는 list와 tuple의 관계와 같다)

 

그래서 set은 딕셔너리의 key가 될 수 없고, frozenset은 딕셔너리의 key가 될 수 있다

 

 

{set((1, 2, 2, 3)) : 'A'}

 

TypeError: unhashable type: 'set'

 

set은 mutable 하기에 해시할 수 없는 자료형이라 딕셔너리의 key가 될 수 없다

 

 

{frozenset((1, 2, 2, 3)) : 'A'}

 

위 코드는 아래를 반환한다

{frozenset({1, 2, 3}): 'A'}

 

집합의 성격을 갖고 있기에 중복된 value인 2는 하나만 갖게 된다

 

set이 딕셔너리의 키가 될 수 없다는 것은 시리즈나 데이터 프레임의 index나 columns도 될 수 없고

 

따라서 해당 데이터가 있는 열은 groupby에도 쓸 수 없다.

 

집합이 key로 필요하다면 frozenset을 활용하자.

 

 

 

unhashble에 대해서는 아래 포스팅을 참고.

 

https://kimpanda.tistory.com/289

 

 

 

유튜브에서 판다스 강의 중입니다

 

https://www.youtube.com/@KimPandas