본문 바로가기
IT/Python

python 소그룹으로 묶기 (subgroup 만들기) str.split

by 르미르미 2023. 10. 28.

예를 들어 

'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)

 

댓글