Python

[Jupyter Notebook] ValueError: If using all scalar values, you must pass an index

xojuholic 2022. 11. 26.
728x90
반응형

오류 원문이다.

ValueError: If using all scalar values, you must pass an index

 

제목의 오류를 유발한 코드는 아래와 같다.

corp_code = df_listed[df_listed['corp_name'] == '카카오'].iloc[0,0]
data = dart_fss.api.info.emp_sttus(corp_code, '2021', '11011')

df = pd.DataFrame(data['list'])
df = df[['corp_code', 'corp_name', 'sexdstn', 'jan_salary_am']]
#df

doc = {
    '기업명': df['corp_name'][0],
    '연봉(남)': df[df['sexdstn'] == '남'].iloc[0, 3],
    '연봉(여)': df[df['sexdstn'] == '여'].iloc[0, 3],
}
df_result = pd.DataFrame(doc)
df_result

 

그리고 오류 내용을 조금 더 자세하게 파악한 내용은 아래와 같다.

ValueError                                Traceback (most recent call last)
Cell In [288], line 15
      8 doc = {
      9     '기업명': df['corp_name'][0],
     10     '연봉(남)': df[df['sexdstn'] == '남'].iloc[0, 3],
     11     '연봉(여)': df[df['sexdstn'] == '여'].iloc[0, 3],
     12 }
---> 13 df_result = pd.DataFrame(doc)		# 오류 발생 부분
     14 df_result

 

이후 머리를 싸매다가 구글링해서 발견한 글에서 해결 방법을 찾았다.

 

요약하면, DataFrame 생성 시 정해진 값들(scalar values)로 생성할 경우에는 인위적으로 index 설정이 필요하다는 것이다. 그리하여 오류를 벗어난 코드는 아래와 같다.

      1 corp_code = df_listed[df_listed['corp_name'] == '카카오'].iloc[0,0]
      2 data = dart_fss.api.info.emp_sttus(corp_code, '2021', '11011')
      3
      4 df = pd.DataFrame(data['list'])
      5 df = df[['corp_code', 'corp_name', 'sexdstn', 'jan_salary_am']]
      6 #df
      7
      8 doc = {
      9    '기업명': df['corp_name'][0],
     10  '연봉(남)': df[df['sexdstn'] == '남'].iloc[0, 3],
     11  '연봉(여)': df[df['sexdstn'] == '여'].iloc[0, 3],
     12
---> 13 df_result = pd.DataFrame(doc, ignore_index = [0])	# 수정한 코드
     14 df_result

 

728x90
반응형
SMALL

댓글

💲 추천 글