중첩 된 JSON에서 값을 추출하고 계산하는 방법은 무엇입니까?

켈리 쇼텔

json 목록을 반복하고 각 json이 반환하는 사전 사전에서 일부 정보를 추출하려고합니다. 약 99 %의 시간 동안 각 json 사전의 세 번째 계층에는 5 개의 '이름'값이 포함되며이 중 2 개는 xml 파일 이름입니다. 그러나 파일은 매번 같은 순서로 나타나지 않고 몇 번 선택하면 xml 파일이 하나만 있습니다.

코드가 두 번째 루프로 진행되기 전에 검색 문자열을 사용하여 xml 파일 수를 계산하는 루프를 만들었습니다. 이렇게하면 xml_dict각 루프에서 생성중인 값의 양이 정확합니다 (2).

"사전 카운터"는 작동하지만 실제로 실행 속도를 늦 춥니 다. 어쨌든 성능 속도를 높이기 위해 xml 카운터를 더 잘 통합 할 수 있습니까? 또한 'else : continue'가 필요한지 모르겠습니다.

예제 json 링크 : https://www.sec.gov/Archives/edgar/data/1736260/000173626020000004/index.json

json_list = [all_forms['Link'][x] for x in all_forms.index if all_forms['Form Type'][x] == '13F-HR']
link_list = []
lcounter = 0
for json in json_list:
    decode = requests.get(json).json()
    xml_dict = {}
    xml_count = 0
    for dic in decode['directory']['item'][0:]:
        for v in dic.values(): 
            if ".xml" in v.lower():
                xml_count += 1
            else:
                continue
    for dic in decode['directory']['item'][0:]:
        if "primary_doc.xml" in dic['name'] and xml_count > 1:
            xml_dict['doc_xml'] = json.replace('index.json', '') + dic['name']
        elif ".xml" in dic['name'].lower() and "primary_doc" not in dic['name']:
            xml_dict['hold_xml'] = json.replace('index.json', '') + dic['name']
        else:
            continue
    if xml_dict:
        link_list.append(xml_dict)
    lcounter += 1
    if lcounter % 100 == 0:
        print("Processed {} forms".format(lcounter))
트 렌튼 맥키 니
import pandas as pd

# list to index.json for Archives
paths = ['https://www.sec.gov/Archives/edgar/data/1736260/000119312515118890/index.json',
         'https://www.sec.gov/Archives/edgar/data/1736260/000173626020000004/index.json',
         'https://www.sec.gov/Archives/edgar/data/51143/000104746917001061/index.json']

# download and each json and join it into a single dataframe
# reset the index, so each row has a unique index number
df = pd.concat([pd.read_json(path, orient='index') for path in paths]).reset_index()

# item is a list of dictionaries that can be exploded to separate columns
dfe = df.explode('item').reset_index(drop=True)

# each dictionary now has a separate row
# normalize the dicts, so each key is a column name and each value is in the row
# rename 'name' to 'item_name', this is the column containing file names like .xml
# join this back to the main dataframe and drop the item row
dfj = dfe.join(pd.json_normalize(dfe.item).rename(columns={'name': 'item_name'})).drop(columns=['item'])

# find the rows with .xml in item_name
# groupby name, which is the archive path with CIK and Accession Number
# count the number of xml files
dfg = dfj.item_name[dfj.item_name.str.contains('.xml', case=False)].groupby(dfj.name).count().reset_index().rename(columns={'item_name': 'xml_count'})

# display(dfg)
                                              name  xml_count
0  /Archives/edgar/data/1736260/000173626020000004          2
1    /Archives/edgar/data/51143/000104746917001061          6
  • 데이터 프레임의 해당 인덱스와 함께 모든 xml 파일 이름으로 데이터 프레임을 인쇄하십시오.
print(dfj[['name', 'item_name']][dfj.item_name.str.contains('.xml')].reset_index())

[out]:
   index                                             name                item_name
0     43  /Archives/edgar/data/1736260/000173626020000004  cpia2ndqtr202013fhr.xml
1     44  /Archives/edgar/data/1736260/000173626020000004          primary_doc.xml
2     66    /Archives/edgar/data/51143/000104746917001061        FilingSummary.xml
3     74    /Archives/edgar/data/51143/000104746917001061         ibm-20161231.xml
4     76    /Archives/edgar/data/51143/000104746917001061     ibm-20161231_cal.xml
5     77    /Archives/edgar/data/51143/000104746917001061     ibm-20161231_def.xml
6     78    /Archives/edgar/data/51143/000104746917001061     ibm-20161231_lab.xml
7     79    /Archives/edgar/data/51143/000104746917001061     ibm-20161231_pre.xml
  • xml 파일만으로 데이터 프레임을 만들고 해당 파일에 대한 전체 경로가있는 열을 추가합니다.
xml_files = dfj[dfj.item_name.str.contains('.xml', case=False)].copy()

# add a column that creates a full path to the xml files
xml_files['file_path'] = xml_files[['name', 'item_name']].apply(lambda x: f'https://www.sec.gov{x[0]}/{x[1]}', axis=1)

# disply(xml_files)
        index                                             name                    parent-dir        last-modified                item_name      type      size                                                                                   file_path
43  directory  /Archives/edgar/data/1736260/000173626020000004  /Archives/edgar/data/1736260  2020-07-24 09:38:30  cpia2ndqtr202013fhr.xml  text.gif     72804  https://www.sec.gov/Archives/edgar/data/1736260/000173626020000004/cpia2ndqtr202013fhr.xml
44  directory  /Archives/edgar/data/1736260/000173626020000004  /Archives/edgar/data/1736260  2020-07-24 09:38:30          primary_doc.xml  text.gif      1931          https://www.sec.gov/Archives/edgar/data/1736260/000173626020000004/primary_doc.xml
66  directory    /Archives/edgar/data/51143/000104746917001061    /Archives/edgar/data/51143  2017-02-28 16:23:36        FilingSummary.xml  text.gif     91940          https://www.sec.gov/Archives/edgar/data/51143/000104746917001061/FilingSummary.xml
74  directory    /Archives/edgar/data/51143/000104746917001061    /Archives/edgar/data/51143  2017-02-28 16:23:36         ibm-20161231.xml  text.gif  11684003           https://www.sec.gov/Archives/edgar/data/51143/000104746917001061/ibm-20161231.xml
76  directory    /Archives/edgar/data/51143/000104746917001061    /Archives/edgar/data/51143  2017-02-28 16:23:36     ibm-20161231_cal.xml  text.gif    185502       https://www.sec.gov/Archives/edgar/data/51143/000104746917001061/ibm-20161231_cal.xml
77  directory    /Archives/edgar/data/51143/000104746917001061    /Archives/edgar/data/51143  2017-02-28 16:23:36     ibm-20161231_def.xml  text.gif    801568       https://www.sec.gov/Archives/edgar/data/51143/000104746917001061/ibm-20161231_def.xml
78  directory    /Archives/edgar/data/51143/000104746917001061    /Archives/edgar/data/51143  2017-02-28 16:23:36     ibm-20161231_lab.xml  text.gif   1356108       https://www.sec.gov/Archives/edgar/data/51143/000104746917001061/ibm-20161231_lab.xml
79  directory    /Archives/edgar/data/51143/000104746917001061    /Archives/edgar/data/51143  2017-02-28 16:23:36     ibm-20161231_pre.xml  text.gif   1314064       https://www.sec.gov/Archives/edgar/data/51143/000104746917001061/ibm-20161231_pre.xml

# create a list of just the file paths
path_to_xml_files = xml_files.file_path.tolist()

print(path_to_xml_files)
[out]: 
['https://www.sec.gov/Archives/edgar/data/1736260/000173626020000004/cpia2ndqtr202013fhr.xml',
 'https://www.sec.gov/Archives/edgar/data/1736260/000173626020000004/primary_doc.xml',
 'https://www.sec.gov/Archives/edgar/data/51143/000104746917001061/FilingSummary.xml',
 'https://www.sec.gov/Archives/edgar/data/51143/000104746917001061/ibm-20161231.xml',
 'https://www.sec.gov/Archives/edgar/data/51143/000104746917001061/ibm-20161231_cal.xml',
 'https://www.sec.gov/Archives/edgar/data/51143/000104746917001061/ibm-20161231_def.xml',
 'https://www.sec.gov/Archives/edgar/data/51143/000104746917001061/ibm-20161231_lab.xml',
 'https://www.sec.gov/Archives/edgar/data/51143/000104746917001061/ibm-20161231_pre.xml']

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

PostgreSQL의 중첩 된 xml 개체에서 값을 추출하는 방법은 무엇입니까?

분류에서Dev

Laravel에서 중첩 된 관계 속성을 합산하는 방법은 무엇입니까?

분류에서Dev

중첩 된 Json에서 CSV로 목록을 추출하는 방법은 무엇입니까?

분류에서Dev

중첩 된 JSON의 길이를 계산하는 방법은 무엇입니까?

분류에서Dev

중첩 된 JSON의 길이를 계산하는 방법은 무엇입니까?

분류에서Dev

두 번째 수준 groupBy 내에 중첩 된 항목을 계산하는 방법은 무엇입니까?

분류에서Dev

jquery를 사용하여 중첩 된 JSON 개체에서 값을 가져 오는 방법은 무엇입니까?

분류에서Dev

Apex를 사용하여 중첩 된 JSON에서 값을 읽는 방법은 무엇입니까?

분류에서Dev

SpringData Mongo-중첩 된 값에 대해 중첩 된 고유 배열을 얻는 방법은 무엇입니까?

분류에서Dev

Oracle에서 중첩 된 XML을 쿼리하는 방법은 무엇입니까?

분류에서Dev

Elixir에서 중첩 된 if 문을 피하는 방법은 무엇입니까?

분류에서Dev

중첩 된 딕셔너리에 동적으로 값을 추가하는 방법은 무엇입니까?

분류에서Dev

중첩 된 lapply / sapply 함수 내에 값을 추가하는 방법은 무엇입니까?

분류에서Dev

중첩 된 innerHtml을 읽고 부모에 배경을 추가하는 방법은 무엇입니까?

분류에서Dev

두 개의 중첩 된 jquery 메서드에서 값을 반환하는 방법은 무엇입니까?

분류에서Dev

dart flutter에서 json 객체로 중첩 된 json 문자열을 변환하는 방법은 무엇입니까?

분류에서Dev

반응에서 중첩 된 JSON을 렌더링하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

중첩 된 JSON을 직렬화하는 방법은 무엇입니까?

분류에서Dev

Immutable JS-선언적 방식으로 깊게 중첩 된 객체에서 값을 추출하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

PrestoSQL에서 중앙값을 계산하는 방법은 무엇입니까?

분류에서Dev

Postgres에서 중앙값을 계산하는 방법은 무엇입니까?

분류에서Dev

Crystal Reports에서 중복 값을 계산하는 방법은 무엇입니까?

분류에서Dev

Object에서 중첩 된 속성을 확산하는 방법은 무엇입니까?

분류에서Dev

중첩 된 스키마에서만 속성 값을 구문 분석하는 방법은 무엇입니까?

분류에서Dev

RavenDB : MultiMapIndex에서 중첩 된 값을 올바르게 쿼리 / 필터링하는 방법은 무엇입니까?

분류에서Dev

지도 내에서 중첩 된 값을 병합하는 적절한 방법은 무엇입니까?

분류에서Dev

임의의 깊이로 깊이 중첩 된 Hashtable에서 값을 검색하는 방법은 무엇입니까?

분류에서Dev

Terraform : 목록 내 중첩 된 맵 목록에서 값을 선택하는 방법은 무엇입니까?

분류에서Dev

중첩 된 json을 Javascript에서 객체 배열로 변환하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    PostgreSQL의 중첩 된 xml 개체에서 값을 추출하는 방법은 무엇입니까?

  2. 2

    Laravel에서 중첩 된 관계 속성을 합산하는 방법은 무엇입니까?

  3. 3

    중첩 된 Json에서 CSV로 목록을 추출하는 방법은 무엇입니까?

  4. 4

    중첩 된 JSON의 길이를 계산하는 방법은 무엇입니까?

  5. 5

    중첩 된 JSON의 길이를 계산하는 방법은 무엇입니까?

  6. 6

    두 번째 수준 groupBy 내에 중첩 된 항목을 계산하는 방법은 무엇입니까?

  7. 7

    jquery를 사용하여 중첩 된 JSON 개체에서 값을 가져 오는 방법은 무엇입니까?

  8. 8

    Apex를 사용하여 중첩 된 JSON에서 값을 읽는 방법은 무엇입니까?

  9. 9

    SpringData Mongo-중첩 된 값에 대해 중첩 된 고유 배열을 얻는 방법은 무엇입니까?

  10. 10

    Oracle에서 중첩 된 XML을 쿼리하는 방법은 무엇입니까?

  11. 11

    Elixir에서 중첩 된 if 문을 피하는 방법은 무엇입니까?

  12. 12

    중첩 된 딕셔너리에 동적으로 값을 추가하는 방법은 무엇입니까?

  13. 13

    중첩 된 lapply / sapply 함수 내에 값을 추가하는 방법은 무엇입니까?

  14. 14

    중첩 된 innerHtml을 읽고 부모에 배경을 추가하는 방법은 무엇입니까?

  15. 15

    두 개의 중첩 된 jquery 메서드에서 값을 반환하는 방법은 무엇입니까?

  16. 16

    dart flutter에서 json 객체로 중첩 된 json 문자열을 변환하는 방법은 무엇입니까?

  17. 17

    반응에서 중첩 된 JSON을 렌더링하는 가장 좋은 방법은 무엇입니까?

  18. 18

    중첩 된 JSON을 직렬화하는 방법은 무엇입니까?

  19. 19

    Immutable JS-선언적 방식으로 깊게 중첩 된 객체에서 값을 추출하는 가장 좋은 방법은 무엇입니까?

  20. 20

    PrestoSQL에서 중앙값을 계산하는 방법은 무엇입니까?

  21. 21

    Postgres에서 중앙값을 계산하는 방법은 무엇입니까?

  22. 22

    Crystal Reports에서 중복 값을 계산하는 방법은 무엇입니까?

  23. 23

    Object에서 중첩 된 속성을 확산하는 방법은 무엇입니까?

  24. 24

    중첩 된 스키마에서만 속성 값을 구문 분석하는 방법은 무엇입니까?

  25. 25

    RavenDB : MultiMapIndex에서 중첩 된 값을 올바르게 쿼리 / 필터링하는 방법은 무엇입니까?

  26. 26

    지도 내에서 중첩 된 값을 병합하는 적절한 방법은 무엇입니까?

  27. 27

    임의의 깊이로 깊이 중첩 된 Hashtable에서 값을 검색하는 방법은 무엇입니까?

  28. 28

    Terraform : 목록 내 중첩 된 맵 목록에서 값을 선택하는 방법은 무엇입니까?

  29. 29

    중첩 된 json을 Javascript에서 객체 배열로 변환하는 방법은 무엇입니까?

뜨겁다태그

보관