파이썬에서 JSON 파일을 데이터프레임 형태로 저장할 때 특정 열의 값을 기준으로 정렬하여 만들려고 합니다

조회수 755회

안녕하세요

전자공시시스템 DART 의 Open API 를 활용하여 기업의 재무제표를 Json 형식으로 다운받았습니다. 아래의 링크에서 이 API 에 대해 더 자세한 내용을 확인하실 수 있습니다. https://opendart.fss.or.kr/guide/main.do?apiGrpCd=DS003

API 를 통해 얻은 기업의 재무제표를 확인하니 아래와 같은 형식이었습니다. 특정 기업의 2018년도 재무제표를 받아온 결과인데 첫 4개의 열은 중복되는 값이고 아무래도 기업의 재무제표이니 account_nmaccount_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 해 줍니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)