result_df[eqp_id] = res[cols]
발생 raise KeyError(f"None of [{key}] are in the [{axis_name}]")
KeyError: "None of [Index(['_time', 'HUM', 'EQP_DESC', 'FL', 'DVC_DESC', 'DVC_ID', 'ISSEC',\n 'OUTHUM', 'TEMP', 'ISPRI', 'DEW', 'OUTTEMP', 'PROJ_NO', 'SETMODE',\n 'RCURRENT', 'RUNSTOP', 'INPUT_STATUS', 'EX_HUM', 'SETCOOLTEMP',\n 'SETPLAYTEMP', 'EN_TEMP', 'OUTPUT_STATUS', 'POWER', 'SETWARMTEMP',\n 'RUN', 'KW', 'SETMODEORG', 'RVOLTAGE', 'SETDEHUM', 'SETSTATUS',\n 'EX_TEMP', 'EN_HUM', 'KWH'],\n dtype='object')] are in the [columns]"
\n 'OUTHUM'
처럼 \n
가 포함된 인덱스가 보입니다. \n
이 들어갑니다.cols를 수정했음에도 엔터를 친 위치와 다르게 \n
이 등장한다. -> 혹시 변수를 불러올 때 cache를 사용하나?? -> 파이썬에서 cache를 사용한다는 개념을 생각해본적이 없다!! -> 근데 항상 python 명령을 실행하면 __pycache__
폴더가 생기는 것이 생각났다. -> __pacache
폴더를 삭제 후 다시 파이썬 파일을 실행시켜보았다. -> 역시나 해결되지 않았다. 오류가 변하지 않았다.
map(lambda x: str.replace(x, " ", ""), cols)
함수를 이용해 공백과 \n
을 대체시켰다. 보기엔 아무런 문제가 없어보인다. 다시 파이썬 파일을 돌려보자. -> 될 줄 알았는데 안되네요..
def get_result(query_list, query_api, org, cols):
result_df = dict()
cols = map(lambda x: str.replace(x, " ", ""), cols)
cols = map(lambda x: str.replace(x, "\n", ""), cols)
for eqp_id, query in query_list:
res = query_api.query_data_frame(org = org, query = query)
result_df[eqp_id] = res[list(cols)]
return result_df
df.apply()
를 이용해보자 - 에러 메세지가 달려졌습니다. 일단 처음의 None of ~ are in the column 에러는 해결한 것 같네요. 하지만 에러가 이어지니 계속 해결해봅시다.
result_df[eqp_id] = res.apply(lambda r: [cols], axis=1, result_type="expand")
KeyError: "['EQP_DESC' 'FL' 'DVC_DESC' 'DVC_ID' 'ISSEC' 'ISPRI' 'PROJ_NO'\n 'INPUT_STATUS' 'SETPLAYTEMP' 'SETWARMTEMP' 'SETDEHUM' 'SETSTATUS'] not found in axis"
라고 한다. 이건 받아온 결과에서 열을 없앨 때 지시한 인덱스들이니, 돌아가서 결과값으로 받아온 result_df의 모양을 살펴보자.디버깅을 해보니 데이터프레임을 잘못 생성하고 있었다.
result_df[eqp_id] = res.apply(lambda r: res[cols], axis=1, result_type="expand")
로 변경해서 실행KeyError: "['HUM', 'FL', 'DEW'] not in index"
다음과 같은 에러가 발생했다. df["index"] = df["index"].apply(lambda r: [cols], axis=1, result_type="expand")
이런 방식으로 해결하는게 가장 효과적으로 보인다.