Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python Pandas – 여러 열에서 선행·후행 공백 제거하기

Pandas strip()으로 선행·후행 공백 제거하기

문자열 데이터를 다루다 보면 값의 앞이나 뒤에 불필요한 공백이 포함되는 경우가 많습니다. Pandas에서는 str.strip() 메서드를 사용하면 선행(앞쪽)과 후행(뒤쪽) 공백을 한 번에 손쉽게 제거할 수 있습니다.

1. 예제용 DataFrame 만들기

먼저 'Product Category'(제품 카테고리), 'Product Name'(제품 이름), 'Quantity'(수량) 세 개의 열을 가진 DataFrame을 생성합니다. 일부 값에는 의도적으로 앞뒤 공백을 넣어두었습니다.

import pandas as pd

# 3개의 열을 가진 DataFrame 생성
dataFrame = pd.DataFrame({
   'Product Category': [' Computer', ' Mobile Phone', 'Electronics ', 'Appliances', ' Furniture', 'Stationery'],
   'Product Name': ['Keyboard', 'Charger', ' SmartTV', 'Refrigerators', ' Chairs', 'Diaries'],
   'Quantity': [10, 50, 10, 20, 25, 50]
})

2. 둘 이상의 열에서 공백 제거하기

공백을 제거할 각 열에 .str.strip()을 적용하고, 그 결과를 다시 해당 열에 할당해야 변경 사항이 실제로 반영됩니다.

# 두 개 이상의 열에서 공백 제거
dataFrame['Product Category'] = dataFrame['Product Category'].str.strip()
dataFrame['Product Name'] = dataFrame['Product Name'].str.strip()

주의: strip()은 원본 DataFrame을 직접 수정하지 않습니다. 반드시 할당 연산자(=)를 사용해 결과를 다시 저장해야 합니다.

3. 전체 코드

import pandas as pd

# 3개의 열을 가진 DataFrame 생성
dataFrame = pd.DataFrame({
   'Product Category': [' Computer', ' Mobile Phone', 'Electronics ', 'Appliances', ' Furniture', 'Stationery'],
   'Product Name': ['Keyboard', 'Charger', ' SmartTV', 'Refrigerators', ' Chairs', 'Diaries'],
   'Quantity': [10, 50, 10, 20, 25, 50]
})

# 두 개 이상의 열에서 선행·후행 공백 제거
dataFrame['Product Category'] = dataFrame['Product Category'].str.strip()
dataFrame['Product Name'] = dataFrame['Product Name'].str.strip()

# 결과 확인
print("공백 제거 후 DataFrame:\n", dataFrame)

4. 실행 결과

위 코드를 실행하면 문자열 열의 모든 불필요한 공백이 제거된 깔끔한 DataFrame을 확인할 수 있습니다.

공백 제거 후 DataFrame:
   Product Category    Product Name  Quantity
0         Computer        Keyboard        10
1     Mobile Phone         Charger        50
2      Electronics         SmartTV        10
3       Appliances    Refrigerators        20
4        Furniture          Chairs        25
5       Stationery         Diaries        50

추가 팁

여러 문자열 열을 일일이 지정하지 않고 한 번에 처리하고 싶다면 select_dtypes()와 반복문을 활용할 수 있습니다.

# 모든 문자열(object) 열의 공백을 한 번에 제거
for col in dataFrame.select_dtypes(include='object').columns:
    dataFrame[col] = dataFrame[col].str.strip()

또한 왼쪽 공백만 제거하려면 lstrip(), 오른쪽 공백만 제거하려면 rstrip()을 사용하면 됩니다.