랭귀지/pandas
ES문자열 제거
유키공
2025. 3. 13. 16:58
import pandas as pd
import numpy as np
# 테스트 데이터
data = {'a': ['TESTES', 'EXAMPLE', 'YESES', 'NO', pd.NA, 12345]}
df = pd.DataFrame(data)
# 벡터화된 연산으로 'ES' 제거 및 결측값 처리
df['a_cleaned'] = np.where(
df['a'].notna(), # 결측값이 아닌 경우에만 처리
df['a'].astype(str).str.replace(r'ES$', '', regex=True), # ES 제거
'' # 결측값은 빈 문자열로 처리
)
print(df)
import numpy as np
import pandas as pd
# 예시 데이터프레임 생성
df = pd.DataFrame({'a': ['ES123', 'ES456', None, 'ES789', '123ES', ''], 'bbb': [1, 2, None, 4, 5, None]})
# 조건과 결과를 정의
conditions = [
df['bbb'].isna(), # 'bbb' 열이 NaN인 경우
df['a'].isna(), # 'a' 열이 NaN인 경우
True # 그 외 경우
]
choices = [
'', # 'bbb' 열이 NaN인 경우
'', # 'a' 열이 NaN인 경우
df['a'].astype(str).str.replace(r'ES$', '', regex=True) # 'ES$' 패턴 제거
]
# np.select를 사용하여 조건에 따라 값을 할당
df['aaa'] = np.select(conditions, choices, default='')
print(df)
import numpy as np
import pandas as pd
# 예시 데이터프레임 생성
df = pd.DataFrame({'a': ['ES123', 'ES456', None, 'ES789', '123ES', ''], 'bbb': [1, 2, None, 4, 5, None]})
# 조건에 따라 처리
df['aaa'] = np.where(
df['bbb'].isna(), # 'bbb' 열이 NaN인 경우
'', # 빈 문자열로 설정
np.where(
df['a'].isna(), # 'a' 열이 NaN인 경우
'', # 빈 문자열로 설정
df['a'].astype(str).str.replace(r'ES$', '', regex=True) # 'ES$' 패턴 제거
)
)
print(df)
import pandas as pd
import re
# 테스트 데이터
data = {'a': ['TESTES', 'EXAMPLE', 'YESES', 'NO', pd.NA, 12345]}
df = pd.DataFrame(data)
# 정규표현식 컴파일
pattern = re.compile(r'ES$')
# 벡터화된 연산 + 결측값 처리
df['a_cleaned'] = df['a'].fillna('').astype(str).str.replace(pattern, '', regex=True)
print(df)
import pandas as pd
import numpy as np
# 테스트 데이터
data = {'a': ['TESTES', 'EXAMPLE', 'YESES', 'NO', np.nan, 12345]}
df = pd.DataFrame(data)
# 벡터화된 연산으로 'ES' 제거
df['a_cleaned'] = df['a'].astype(str).str.replace(r'ES$', '', regex=True)
# NaN 값을 빈 문자열로 대체 (필요한 경우)
df['a_cleaned'] = df['a_cleaned'].replace('nan', '')
print(df)