josw123 / dart-fss

한국 금융감독원에서 운영하는 다트(Dart) 시스템 크롤링을 위한 라이브러리
https://github.com/josw123/dart-fss
MIT License
317 stars 111 forks source link

TypeError: must be real number, not str #172

Open bhnvx opened 1 month ago

bhnvx commented 1 month ago

xbrl 파일을 pd.ExcelWriter 를 사용하여 엑셀 파일을 만드는 도중 에러가 발생했습니다.

with pd.ExcelWriter(f"{xbrl_request.corp_code}.xlsx", engine="xlsxwriter") as writer:
    for table in xbrl.tables:
        data = xbrl.get_table_by_code(table.code).to_DataFrame(
            # show_concept=False, show_class=False, separator=True
        )
        items.append({"code": table.code, "dataframe": data.to_dict()})

        data = self.convert_to_numeric(data)
        data.to_excel(writer, sheet_name=table.code)

dart_fss.xbrl.helper 경로의 179번째 line에서 value가 string이면 나오는 에러 같습니다. 각 table code별로 sheet name을 지정하여 파일을 만들어야 하는 경우때문에 위 코드라인처럼 작성하고 있는데, 현재는 내부 코드를

try:
    if not math.isnan(value):
        results[index] = value
except:
    results[index] = value

이처럼 고쳐 사용하고 있지만 서버 자체가 docker를 사용한 배포를 생각하고 있습니다. 이 부분이 에러인 부분인가요 아니면 정상 작동하는 부분일까요?

josw123 commented 1 month ago

좀 더 확인해 봐야겠지만, math.isnan에 string을 입력하여 발생하는 문제이므로 동작은 할것으로 생각됩니다. 나중에 한번 추가확인해보도록 하겠습니다.

bhnvx commented 3 weeks ago

고생하시고, 감사합니다. 단일 Table 객체를 to_DataFrame() 하여도 같은 에러가 발생하는 걸로 확인했습니다. 기업 코드는 00401731 (LG전자) 의 사업보고서 (A001)로 설정하고 xbrl 요청 후 get_table_by_code("U800200") 메소드 call 이후 데이터 프레임 생성을 시도하면 같은 에러가 나옵니다.

josw123 commented 2 weeks ago

한번 확인해보도록 하겠습니다.