상황: Sentry로 부터 오는 error log의 Json 파싱을 하는 과정에서 이슈별 파싱되는 컬럼이 달라, get & transform하는 function에서 explode한 후, 컬럼들을 표준화할 필요가 생김
col_list = ['a', 'b', 'c']
df = df.explode('d')
df = pd.concat([df.drop(['d'], axis=1), df['d'].apply(pd.Series)], axis=1)
df = df.reindex(columns=col_list, fill_value=0)
이 상황에서 대부분은 for문을 써도 크게 퍼포먼스가 떨어질 것 같지는 않지만, index를 다시 정리하는 걸 이용해 이렇게 추가할 수 있다는 게 신기해서 남겨둔다.
주의 사항: fill_value를 None으로 설정하면 인식 못 하고 pd.NaN이 된다. None을 채워야 한다면 후속 fillna 처리가 필요하다.
일반적인 reindex 사용은 row index의 결측값에 대해 ffill(직전값)이나 bfill(직후값)을 채우는 방식으로 보인다.
'파이썬' 카테고리의 다른 글
None, NaN, NaT 판단 시 주의점 (0) | 2024.04.29 |
---|---|
[pandas] series type이 안정적으로 잡히지 않는 케이스 (0) | 2024.04.26 |
[Pandas] Dataframe list + for문 조합 시 유의사항 (0) | 2024.04.22 |
파이썬을 인터프리터 언어라고 하지 말자 (0) | 2023.08.18 |
주차별 특정 요일 따오기 (0) | 2023.05.02 |