파이썬에서 JSON 파일을 데이터프레임 형태로 저장할 때 특정 열의 값을 기준으로 정렬하여 만들려고 합니다
조회수 755회
안녕하세요
전자공시시스템 DART 의 Open API 를 활용하여 기업의 재무제표를 Json 형식으로 다운받았습니다. 아래의 링크에서 이 API 에 대해 더 자세한 내용을 확인하실 수 있습니다. https://opendart.fss.or.kr/guide/main.do?apiGrpCd=DS003
API 를 통해 얻은 기업의 재무제표를 확인하니 아래와 같은 형식이었습니다.
특정 기업의 2018년도 재무제표를 받아온 결과인데 첫 4개의 열은 중복되는 값이고 아무래도 기업의 재무제표이니 account_nm
과 account_detail
이 중요해보였습니다.
이 두 열을 이용하여 정렬을 해야할 것 같은데 columns =
으로 정렬을 하고 나서 account_detail
을 값에 따라 여러개의 열로 나누어서 정렬을 할 수 있을까요?
예를 들어 137번에 account_nm
은 기말자본
이고 account_detail
은 자본[memeber] 기타자본항목
이라고 나와있는데 account_detail_1
을 자본
, account_deatil_2
를 기타자본항목
으로 나눠서 정렬을 하고 싶습니다.
답변을 해주시면 정말 감사하겠습니다.
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
정확히 원하시는 걸 캐치하지는 못했는데,
account_detail
을 우선[member]
란 문자열을 기준으로split
해서 각각의 컬럼으로 만든 후에 다루어 보면 어떨까 싶어요.예제는 다음과 같습니다.
Python 3.8.1 (tags/v3.8.1:1b293b6, Dec 18 2019, 23:11:46) [MSC v.1916 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license()" for more information. >>> import pandas as pd >>> df = pd.DataFrame({ 'detail':[ '1[m]', '2[m]3[m]', '3[m]', '4'] }) >>> df detail 0 1[m] 1 2[m]3[m] 2 3[m] 3 4 >>> df.detail.str.split('\[m\]', expand=True) 0 1 2 0 1 None 1 2 3 2 3 None 3 4 None None >>> df.detail.str.split('\[m\]', expand=True).fillna('') 0 1 2 0 1 1 2 3 2 3 3 4 >>> df[['d1', 'd2', 'd3']]=df.detail.str.split('\[m\]', expand=True).fillna('') >>> df detail d1 d2 d3 0 1[m] 1 1 2[m]3[m] 2 3 2 3[m] 3 3 4 4
문자열 컬럼을 특정 토큰을 구분자로 split 하고, expand 하면, 데이터프레임이 되고, 그 결과를 원본
df
에 컬럼명을 주어서 assign 해 줍니다.
댓글 입력