Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- MS-SQL
- PyQt5
- flutter
- urllib
- swift
- sqlite
- 맛집
- Linux
- mssql
- 유니티
- node.js
- GIT
- ASP
- PyQt
- port
- tensorflow
- javascript
- python
- 리눅스
- 함수
- 다이어트
- IOS
- MySQL
- Unity
- PER
- ubuntu
- 라즈베리파이
- Excel
- pandas
- 날짜
Archives
아미(아름다운미소)
splite 본문
import pandas as pd
import numpy as np
# 예시 데이터프레임 생성
data = {'a': ['foo_bar', 'hello_world', 'example']} # 'example'에는 _가 없음
df = pd.DataFrame(data)
# numpy 배열로 변환
arr = df['a'].to_numpy()
# 분할 결과의 길이를 동일하게 맞추기
split_list = [x.split('_') if '_' in x else [x, np.nan] for x in arr] # _가 없으면 [원본, NaN]
split_arr = np.array(split_list, dtype=object) # 2차원 배열로 변환 (dtype=object로 설정)
# 분할된 결과를 새로운 열로 추가
df['aaa'] = split_arr[:, 0] # 첫 번째 부분 (원본 또는 분할된 첫 번째 부분)
df['bbb'] = split_arr[:, 1] # 두 번째 부분 (분할된 두 번째 부분 또는 NaN)
print(df)
import numpy as np
import pandas as pd
# 예제 데이터프레임 생성
df = pd.DataFrame({'a': ['A_001', 'B_002', 'C_003', 'D004']}) # 'D004'은 '_'가 없음
# NumPy 배열로 변환
np_array = df['a'].to_numpy()
# '_' 기준으로 문자열 분리, 없는 경우 NaN 처리
split_result = np.array([item.split('_') if '_' in item else [item, np.nan] for item in np_array], dtype=object)
# 첫 번째와 두 번째 요소를 추출
aaa = split_result[:, 0]
bbb = split_result[:, 1]
# 결과를 DataFrame에 추가
df['aaa'] = aaa
df['bbb'] = bbb
print(df)
import numpy as np
import pandas as pd
# 예제 데이터프레임 생성
df = pd.DataFrame({'a': ['A_001', 'B_002', 'C_003']})
# NumPy 배열로 변환
np_array = df['a'].to_numpy()
# '_' 기준으로 문자열 분리
split_result = np.char.split(np_array, sep='_')
# 첫 번째와 두 번째 요소를 추출하여 새로운 NumPy 배열 생성
aaa = np.array([item[0] for item in split_result])
bbb = np.array([item[1] for item in split_result])
# 결과를 DataFrame에 추가
df['aaa'] = aaa
df['bbb'] = bbb
print(df)
import pandas as pd
# 예시 데이터프레임 생성
df = pd.DataFrame({'a': ['foo_bar', 'hello_world', 'example', 'single']})
# 문자열 분할
split_df = df['a'].str.split('_', expand=True)
# NaN인 경우 원본 값으로 채우기
split_df = split_df.fillna(df['a'])
# 새로운 열 추가
df['c'] = split_df[0] # 첫 번째 열
df['d'] = split_df[1] # 두 번째 열 (NaN인 경우 원본 값으로 채워짐)
print(df)
import pandas as pd
# 예시 데이터프레임 생성
df = pd.DataFrame({'a': ['abc@123', 'def$456', 'ghi', 'jkl@789$world', 'mno@123', None]})
# @ 또는 $를 기준으로 분할하고 마지막 부분 추출
df['extracted'] = df['a'].str.split(r'[@$]').str[-1]
# 결과 출력
print(df)
import numpy as np
import pandas as pd
# 예시 데이터프레임 생성
df = pd.DataFrame({'a': ['abc@123', 'def$456@hello', 'ghi', 'jkl@789$world', 'mno', None]})
# numpy 배열로 변환
array_data = df['a'].to_numpy()
# 벡터화된 연산으로 '@' 또는 '$'를 기준으로 분할하고 마지막 부분 반환
split_result = np.array([
x.split('@')[-1].split('$')[-1] # '@'와 '$' 모두 처리
if isinstance(x, str) and ('@' in x or '$' in x) # '@' 또는 '$'가 있는 경우
else x # 그 외 경우 원래 값 유지
for x in array_data
])
# 결과 출력
print(split_result)
import numpy as np
import pandas as pd
# 예시 데이터프레임 생성
df = pd.DataFrame({'a': ['abc@123', 'def@456@hello', 'ghi', 'jkl@789@world', 'mno', None]})
# numpy 배열로 변환
array_data = df['a'].to_numpy()
# 벡터화된 연산으로 '@'를 기준으로 분할하고 마지막 부분 반환
split_result = np.array([x.split('@')[-1] if isinstance(x, str) and '@' in x else x for x in array_data])
# 결과 출력
print(split_result)
import pandas as pd
import numpy as np
# 데이터 생성 함수
def generate_string():
# '::'로 구분된 6개의 랜덤 문자열 생성 (최소 5개의 '::' 포함)
parts = [f"part{i}" for i in range(6)] # 6개의 부분 문자열 생성
return "::".join(parts) # '::'로 연결
# 400만 개의 데이터 생성
num_rows = 4_000_000 # 400만 행
data = {'a': [generate_string() for _ in range(num_rows)]}
# DataFrame 생성
df = pd.DataFrame(data)
# 결과 확인
print(df.head())
chunk_size = 1_000_000 # 청크 크기
result = []
for i in range(0, len(df), chunk_size):
chunk = df.iloc[i:i + chunk_size]
chunk['split_result'] = chunk['a'].str.split('::').str[4]
result.append(chunk)
df = pd.concat(result)
print(df)
import numpy as np
# numpy 배열로 변환
array_data = df['a'].to_numpy()
# numpy 벡터화된 연산
split_result = np.array([x.split('::')[4] if '::' in x else None for x in array_data])
# 결과를 DataFrame에 추가
df['split_result'] = split_result
print(df)
import numpy as np
# Pandas Series를 NumPy 배열로 변환
data = df['a'].astype(str).to_numpy() # 모든 데이터를 문자열로 변환
# 문자열 분할 및 4번째 요소 추출
split_data = np.char.split(data, sep='::') # NumPy의 벡터화된 split 함수
# 4번째 요소 추출 (리스트 길이 확인 후 안전하게 처리)
df['4th_element'] = [
item[3] if len(item) > 3 else None for item in split_data
]
# 문자열이 아닌 데이터는 None으로 처리
split_array = np.array([x.split('_') if isinstance(x, str) else None for x in np_array])
import numpy as np
# numpy 배열로 변환 후 분할
np_array = df['col'].values
split_array = np.array([x.split('_') for x in np_array])
import pandas as pd
import numpy as np
# 예제 데이터 (NaN 포함)
data = {'a': ['A::B::C::D::E', 'F::G::H::I::J', np.nan, 'K::L::M::N::O', 123.45]}
df = pd.DataFrame(data)
# 방법 1: float 타입 데이터를 문자열로 변환
df['a'] = df['a'].astype(str)
result = [x.split('::')[4] if '::' in x else None for x in df['a']]
print(result)
'랭귀지 > pandas' 카테고리의 다른 글
두 csv 비교 (0) | 2025.03.14 |
---|---|
ES문자열 제거 (0) | 2025.03.13 |
날짜 형식 변환 (YYYY-MM-DD 형식으로) (0) | 2025.03.12 |
백터화 (0) | 2025.03.11 |
주어진 조건에 따라 각각 100개의 행을 랜덤하게 추출하여 새로운 DataFrame을 만드는 예제 (0) | 2025.03.07 |
Comments