bestsource

Panda를 사용하여 여러 헤더가 포함된 엑셀 시트 읽기

bestsource 2023. 4. 14. 21:57
반응형

Panda를 사용하여 여러 헤더가 포함된 엑셀 시트 읽기

다음과 같은 헤더가 여러 개 있는 엑셀 시트를 가지고 있습니다.

_________________________________________________________________________
    ____|_____|        Header1    |        Header2     |        Header3      |
    ColX|ColY |ColA|ColB|ColC|ColD||ColD|ColE|ColF|ColG||ColH|ColI|ColJ|ColDK|
    1   | ds  | 5  | 6  |9   |10  | .......................................
    2   | dh  |  ..........................................................
    3   | ge  |  ..........................................................
    4   | ew  |  ..........................................................
    5   | er  |  ..........................................................

여기서 처음 두 열에는 헤더가 없지만 다른 열에는 Header1, Header2, Header3 등의 헤더가 있음을 알 수 있습니다.그래서 저는 이 시트를 읽고 비슷한 구조의 다른 시트와 병합하고 싶습니다.

첫 번째 열 'ColX'에 병합하고 싶습니다.지금은 이렇게 하고 있습니다.

import pandas as pd

totalMergedSheet = pd.DataFrame([1,2,3,4,5], columns=['ColX'])
file = pd.ExcelFile('ExcelFile.xlsx')
for i in range (1, len(file.sheet_names)):
    df1 = file.parse(file.sheet_names[i-1])
    df2 = file.parse(file.sheet_names[i])
    newMergedSheet = pd.merge(df1, df2, on='ColX')
    totalMergedSheet = pd.merge(totalMergedSheet, newMergedSheet, on='ColX')

하지만 어느 칼럼도 제대로 읽지는 못하며 원하는 방식으로 결과를 돌려주지 못할 것 같습니다.따라서 결과 프레임은 다음과 같아야 합니다.

________________________________________________________________________________________________________
    ____|_____|        Header1    |        Header2     |        Header3      |        Header4     |        Header5      |
    ColX|ColY |ColA|ColB|ColC|ColD||ColD|ColE|ColF|ColG||ColH|ColI|ColJ|ColK| ColL|ColM|ColN|ColO||ColP|ColQ|ColR|ColS|
    1   | ds  | 5  | 6  |9   |10  | ..................................................................................
    2   | dh  |  ...................................................................................
    3   | ge  |  ....................................................................................
    4   | ew  |  ...................................................................................
    5   | er  |  ......................................................................................

[갱신 및 수정 내용은 댓글 참조]

Panda는 이미 Excel 스프레드시트 전체를 읽을 수 있는 기능을 가지고 있기 때문에 각 시트를 수동으로 해석/머지할 필요가 없습니다.panda.read_excel()을 보세요.Excel 파일을 한 줄로 읽을 수 있을 뿐만 아니라 문제 해결에 도움이 되는 옵션도 제공합니다.

서브컬럼이 있기 때문에 MultiIndexing을 찾습니다.기본적으로, 판다들은 맨 위 행에서 유일한 머리글 행으로 읽힌다.합격할 수 있습니다.header의론하여 하게 하다.pandas.read_excel()헤더로 사용되는 행의 수를 나타냅니다.당신 같은 경우에는,header=[0, 1]첫 번째 두 행을 나타냅니다.여러 장의 시트를 가지고 있을 수도 있기 때문에 합격할 수 있습니다.sheetname=None(이것은 모든 시트를 검토하도록 지시합니다).명령어는 다음과 같습니다.

df_dict = pandas.read_excel('ExcelFile.xlsx', header=[0, 1], sheetname=None)

키가 시트 이름이고 값이 각 시트의 데이터 프레임인 사전이 반환됩니다.모든 것을 하나의 DataFrame으로 정리하고 싶다면 Panda를 사용하면 됩니다.concat:

df = pandas.concat(df_dict.values(), axis=0)

인덱스가 MultiIndex인 경우도 있습니다(OP에서는 실제로 해당).그것을 설명하려면 ,index_col=적당하게.

df_dict = pd.read_excel('Book1.xlsx', header=[0,1], index_col=[0,1], sheetname=None)

언급URL : https://stackoverflow.com/questions/40554106/read-excel-sheet-with-multiple-header-using-pandas

반응형