Tip.
데이터 프레임에서 사용시
str.split("구분자 ", expand=True)
split에서 expand=True를 넣으면 바로 데이터프레임의 컬럼으로 생성이 된다.
활용 데이터 구성
데이터 프레임 생성
col = ["col1", "col2", "col3"]
row = ["row1", "row2", "row3", "row4", "row5"]
data = [["a_1:first", 1, 2], ["b_2:seconds", 3, 4], ["c_3:third", 5, 6], ["d_4:fourth", 7, 8], ["e_5:fifth", 9, 10]]
df = pd.DataFrame(data, row, col)
리스트 생성
lst = ["a_1:first", "b_2:seconds", "c_3:third", "d_4:fourth", "e_5:fifth"]
lst
데이터 프레임 Split
col1 컬러만 추출
df['col1']
col1 컬럼에서 "_" 를 기준으로 분리
df['col1'].str.split("_")
"_" 를 기준으로 split 함수를 사용하면, "_" 앞에 있던 a, b, c, d와 뒤에있던 문자들이 나누어지게 된다.
"_"를 기준으로 분리한 것 중에 추출
df['col1'].str.split("_").str.get(0) # 첫번째 추출
df['col1'].str.split("_").str.get(1) # 두번째 추출
문자열 처리 메서드 get()을 사용하면 원하는 값을 추출할 수 있다.
"_" 앞부분 추출 (.str.get(0) 사용)
"_" 뒷부분 추출 (.str.get(1) 사용)
.str.get(1)의 결과 값을 이어서 ": "뒷부분 추출하고 싶다면?
"_" 뒷부분 추출후 ":" 를 기준으로 다시 분리후 추출
df['col1'].str.split("_").str.get(1).str.split(":").str.get(1)
여기서 만약 앞 두글자만 추출하고 싶다면?
slice() 를 이용하면 된다.
Slice( ) 함수란 ?
슬라이싱(slicing) or 슬라이스(slice):
연속적인 객체 내에(예: 리스트, 튜플, 문자열) 범위를 지정해 선택해서 객체들을 가져오는 방법 및 표기법 의미
slice(종료위치)
slice(시작위치, 종료위치)
slice(시작위치, 종료위치, 증가단계)
"_" 를 기준으로 분리 후 두번째 값 가져온 후 ":"를 기준으로 분리 후 또 가져온 두번째 값에서 앞의 두글자만 출력
df['col1'].str.split("_").str.get(1).str.split(":").str.get(1).str.slice(0, 2)
위와 같이 이어서 str.slice(0,2)를 명령하여 사용
리스트 Split( )
데이터 구성
위의 리스트 그대로를 split()으로 분리하면 어떻게 될까?
lst.split("_")
위와 같이 오류가 뜬다.
그 이유는 리스트 전체를 한번에 분리하려고 했기 때문이다.
해결방법으로는 아래와 같이 리스트 내부에 있는 인자 하나하나를 불러와서 split하면 된다.
리스트 에서 "_" 를 기준으로 분리 후 뒷부분 추출
for l in lst: # for 문으로 하나씩 받아옴
print(l.split("_")[1])
l.split("_") 으로만 명령했으면 a, 1:first 이런식으로 분리되어 출력되었을 것이다.
여기에서 [1]로 리스트 인덱싱 했으므로 뒷부분만 출력되었다.
문자열 앞부분 즉, a,b,c,d의 문자를 출력하고 싶으면 [0]이라고 인덱싱하면된다.
"_" 뒷부분 추출후 ":" 를 기준으로 다시 분리후 추출
# ":"의 앞부분 추출
for l in lst:
print(l.split("_")[1].split(":")[0])
# ":"의 뒷부분 추출
for l in lst:
print(l.split("_")[1].split(":")[1])
- ":" 의 앞 부분 출력 결과
- ":" 의 뒷 부분 출력 결과
"_" 를 기준으로 분리 후 두번째 값 가져온 후 ":"를 기준으로 분리 후 또 가져온 두번째 값에서 앞의 두글자만 출력
for l in lst:
print(l.split("_")[1].split(":")[1][0:2])
join ( ) 함수란 ?
join함수는 리스트를 특정문자열을 이용하여 일정하게 합쳐줄 때 사용하는 함수.
기본값은 공백이므로 구분자란에 공백으로 남겨둘 시 공백을 기준으로 합쳐질 것이다. (ex. "".join(lst))
"특정문자열".join(리스트)
예시 경로
path = '/Users/mind0o0/Desktop/project/test/split'
문자열 분리
sp = path.split("/")
분리된 문자열 원하는 특정문자열을 넣어서 합치기
sp_j = "/".join(sp)
분리한 문자열 중 원하는 부분만 합치기
sp = path.split("/")[0:3]
sp_j = "/".join(sp)
분리했을 때 "", "Users", "mind0o0" .. 로 분리됨
구분자인 "/"가 있던 자리가 공백으로 첫자리에 위치해있기때문에 공백 자리 인 0부터해서 세번째 자리까지 슬라이싱 된다.
'Python' 카테고리의 다른 글
[VS Code] Power Mode(파워모드) 사용하여 나의 vscode 꾸미기 (0) | 2024.02.07 |
---|---|
[Python] DB 연결 (sqlalchemy 사용방법 - to_sql, read_sql, connect, commit, rollback) (0) | 2023.12.13 |
[python] Multi-Thread 동시성/병렬성 프로그래밍(시간단축) (0) | 2023.08.11 |
[Python] dataframe append 와 concat (0) | 2023.08.04 |
[python] for, if문 한줄 작성 | 리스트 컴프리헨션(List Comprehension) (2) | 2023.07.31 |