반응형
열 이름의 공백 제거 또는 바꾸기
데이터 프레임 열 이름의 공백을 "_"로 대체할 수 있는 방법은 무엇입니까?
['join_date' 'fiscal_quarter' 'fiscal_year' 'primary_channel'
'secondary_channel' 'customer_count' 'new_members' 'revisit_next_day'
'revisit_14_day' 'demand_1yr' 'revisit_next_day_rate'
'revisit_14_day_rate' 'demand_1yr_per_new_member' u'ch_Ad Network'
u'ch_Affiliate' u'ch_Branded SEM' u'ch_DSP' u'ch_Daily Email'
u'ch_Daily Messaging' u'ch_Direct' u'ch_Direct Publisher' u'ch_Email'
u'ch_Feeds' u'ch_Native' u'ch_Non-Branded SEM' u'ch_Organic Search'
u'ch_Paid Social' u'ch_Site' u'ch_Special Email' u'ch_Television'
u'ch_Trigger Email' u'ch_UNMAPPED' u'ch_Unpaid Social' u'quarter_Q2'
u'quarter_Q3' u'quarter_Q4']
- 공백을 제거하려면:
- 모든 곳에서 공백을 제거하려면:
df.columns = df.columns.str.replace(' ', '')
- 문자열 시작 부분의 공백을 제거하려면:
df.columns = df.columns.str.lstrip()
- 문자열 끝에 공백을 제거하려면:
df.columns = df.columns.str.rstrip()
- 양쪽 끝의 공백을 제거하려면:
df.columns = df.columns.str.strip()
- 공백을 다른 문자로 바꾸는 방법(예: 밑줄):
- 곳곳의 공백을 대체하는 방법
df.columns = df.columns.str.replace(' ', '_')
- 처음에 공백을 바꾸는 방법:
df.columns = df.columns.str.replace('^ +', '_')
- 끝 부분의 공백을 교체하는 방법:
df.columns = df.columns.str.replace(' +$', '_')
- 양쪽 끝의 공백을 교체하려면:
df.columns = df.columns.str.replace('^ +| +$', '_')
위의 내용은 특정 열에도 적용됩니다. 열 이름이 있다고 가정합니다.col
, 그럼 그냥 다음을 수행합니다.
df[col] = df[col].str.strip() # or .replace as above
명령을 체인으로 연결할 수 있음
df.columns = df.columns.str.strip().str.replace(' ', '_')
파이썬 문자열 메서드는 매우 빠르며 열 이름을 수정하기 위해 목록 이해에 사용할 수 있습니다.
# replace white spaces by underscores
df.columns = [c.replace(' ', '_') for c in df]
# strip leading white spaces
df.columns = [c.lstrip() for c in df]
# strip trailing white spaces
df.columns = [c.rstrip() for c in df]
# replace leading white spaces by underscores
df.columns = ['_' + c.lstrip() for c in df]
아니면map
스트립 메소드:
# strip leading white spaces
df.columns = list(map(str.lstrip, df))
팬더의 벡터화된 문자열 방법(pandas.Index.str
및 )은 최적화되어 있지 않기 때문에 이해에 파이썬 문자열 방법을 사용하는 것이 일반적으로 더 빠릅니다. 특히 체인을 연결해야 할 경우 더욱 그렇습니다.
예를 들어, 100k 열 이름의 경우 3개의 메서드를 함께 체인해야 하는 경우 Python 문자열 메서드가 동등한 Panda 메서드보다 2-5배 빠릅니다.
n = 100_000
df = pd.DataFrame([range(n)], columns=[f" {i} {j} " for i,j in zip(range(n), range(n, 0, -1))])
%timeit df.set_axis(df.columns.str.replace('^ +', 'S', regex=True).str.replace(' +$', 'E', regex=True).str.replace(' ', '_'), axis=1)
# 331 ms ± 2.21 ms per loop (mean ± std. dev. of 7 runs, 100 loops each)
%timeit df.set_axis('S' + df.columns.str.strip().str.replace(' ', '_') + 'E', axis=1)
# 118 ms ± 3.66 ms per loop (mean ± std. dev. of 7 runs, 100 loops each)
%timeit df.set_axis(['S' + c.strip().replace(' ', '_') + 'E' for c in df], axis=1)
# 68 ms ± 5.09 ms per loop (mean ± std. dev. of 7 runs, 100 loops each)
언급URL : https://stackoverflow.com/questions/41476150/remove-or-replace-spaces-in-column-names
반응형
'bestsource' 카테고리의 다른 글
MariaDB의 열 값을 다른 테이블에서 바꾸기 (0) | 2023.09.11 |
---|---|
liquibebase를 사용하여 DB의 기존 행을 업데이트 할 수 있습니까? (0) | 2023.09.11 |
memcpy 0바이트를 상수 변수로 - 정의되지 않은 동작? (0) | 2023.09.11 |
각2 스프링 부트 서버 사이드 이벤트 (0) | 2023.09.11 |
@ControllerAdvice로 간단한 서블릿 필터 작동 (0) | 2023.09.11 |