둘다 집합의 개념이고 중복된 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
'판다스 > 판다스 팁' 카테고리의 다른 글
[pandas] 엑셀의 날짜가 숫자로 읽어질 때 datetime으로 변환하는 방법 (0) | 2023.08.25 |
---|---|
[pandas] csv파일의 멀티 인덱스를 판다스로 읽었을 때 Unnamed columns가 생성된다면? (0) | 2023.08.23 |
[pandas] 특정 열의 값으로 데이터 프레임 나눠서 리스트로 만들기 (0) | 2023.08.06 |
[pandas] 정규표현식에서 그룹명을 지정하기 (0) | 2023.08.06 |
[pandas] 일부만 %로 표기된 열을 float으로 바꿀 때 (0) | 2023.07.05 |