반응형

09-08. 차원축소, 스칼라 변환 (squeeze)

DataFrame.squeeze(axis=None)

 

개요


squeeze메서드는 차원을 축소(압축)하는 메서드입니다. 예를들어 한개의 행이나 열만 있는 DataFrame을 squeeze하면 Series 객체가 되며, 1개 인덱스만 있는 Series를 squeeze하면 스칼라값이 됩니다. 마찬가지로 1행,1열만 있는 DataFrame 객체를 squeeze하면 스칼라 값이 됩니다.

 

사용법


기본 사용법
df.squeeze(axis=None)
axis : 압축을 진행할 축 입니다.

반응형

 

예시


먼저, 아래와 같이 간단한 2x2 객체를 만들어 보겠습니다.

df=pd.DataFrame(data=[[1,2],[3,4]],index=['row1','row2'],columns=['col1','col2'])
print(df)
>>
      col1  col2
row1     1     2
row2     3     4

DataFrame을 Series로
1개의 열이나 1개의 행만 있는 DataFrame객체를 squeeze하면 Series 객체가 됩니다.

먼저 row1을 drop하여 1행짜리 DataFrame을 만들고 squeeze하겠습니다.

# row1 삭제
df_row=df.drop(index='row1')
print(df_row)
>>
      col1  col2
row2     3     4
# 압축 실행
print(df_row.squeeze())
>>
col1    3
col2    4
Name: row2, dtype: int64

결과값이 Series객체로 변환된 것을 확인할 수 있습니다.

col1을 drop하여 1열짜리 DataFrame을 만들고 squeeze하겠습니다.

# col1 삭제
df_col=df.drop(columns='col1')
print(df_col)
>>
      col2
row1     2
row2     4
print(df_row.squeeze())
>>
col1    3
col2    4
Name: row2, dtype: int64

결과값이 Series객체로 변환된 것을 확인할 수 있습니다.

DataFrame을 스칼라 값으로 압축
col1과 row1을 삭제해서 요소1개짜리 DataFrame을 생성하고, squeeze를 실행하면 스칼라값이 반환됩니다.

# row1 , col1을 삭제하여 1행/1열짜리 DataFrame만들기
df_col_row = df.drop(index='row1',columns='col1')
print(df_col_row)
>>
      col2
row2     4
print(df_col_row.squeeze())
>>
4

결과값으로 스칼라값이 반환된것을 확인할 수 있습니다.

압축할 수 없는 경우
압축할 수 없는경우 원본을 반환합니다.

print(df.squeeze())
>>
      col1  col2
row1     1     2
row2     3     4
반응형

+ 최근 글