IT/Python
python 소그룹으로 묶기 (subgroup 만들기) str.split
르미르미
2023. 10. 28. 20:37
예를 들어
'b-01-01', 'b-01-02', 'c-01-01', 'c-01-02'
라는 이름을 가진 series 가 있을 때
앞의 b-01, c-01 끼리 subgroup을 만드려고 한다면!
import pandas as pd
# 시리즈 생성
index_data = ['b-01-01', 'b-01-02', 'c-01-01', 'c-01-02']
values = [10, 20, 30, 40]
series = pd.Series(values, index=index_data)
# 특정 패턴을 가진 인덱스를 선택
selected_indices = series[series.index.str.startswith('b-01') | series.index.str.startswith('c-01')]
# 선택된 인덱스의 형태 수정
new_indices = selected_indices.index.str.split('-').str[1]
# 새로운 시리즈 생성
new_series = pd.Series(selected_indices.values, index=new_indices)
print(new_series)
이것을 확장하여서 for 문을 넣어서 만들면!
import pandas as pd
namelist=['b-01-01', 'b-01-02', 'c-01-01', 'c-01-02']
result_s=pd.Series(~~~~)
#특정 패턴을 가진 인덱스를 선택
new_series={}
for k in namelist:
new_k=k.split('-')[0]+'-'+k.split('-')[1]
selected_result_s = result_s[result_s.index.str.startswith(new_k) ]
new_indices=selected_result_s.index.str.split('-').str[2]
new_series[new_k]=pd.Series(selected_result_s.values, index=new_indices)