Python Pandas-빈 행으로 Excel 스프레드 시트 분할

JHarley1

다음 입력 파일 ( "ToSplit2.xlsx")이 제공됩니다.

+-----------------+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Section One     |     |     |     |     |     |     |     |     |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Label 1   | 100 |     |     |     |     |     |     |     |     |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Label 2   | 100 | 200 |     |     |     |     |     |     |     |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Label 3   | 100 | 200 | 300 |     |     |     |     |     |     |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Label 4   | 100 | 200 | 300 | 400 |     |     |     |     |     |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Label 5   | 100 | 200 | 300 | 400 | 500 |     |     |     |     |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Label 6   | 100 | 200 | 300 | 400 | 500 | 600 |     |     |     |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Label 7   | 100 | 200 | 300 | 400 | 500 | 600 | 700 |     |     |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Label 8   | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 |     |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Label 9   | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Label 10  | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | 1000 |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
|           |     |     |     |     |     |     |     |     |     |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Section Two     |     |     |     |     |     |     |     |     |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Label 1   | 100 |     |     |     |     |     |     |     |     |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Label 2   | 100 | 200 |     |     |     |     |     |     |     |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Label 3   | 100 | 200 | 300 |     |     |     |     |     |     |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Label 4   | 100 | 200 | 300 | 400 |     |     |     |     |     |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Label 5   | 100 | 200 | 300 | 400 | 500 |     |     |     |     |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Label 6   | 100 | 200 | 300 | 400 | 500 | 600 |     |     |     |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Label 7   | 100 | 200 | 300 | 400 | 500 | 600 | 700 |     |     |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Label 8   | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 |     |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Label 9   | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Label 10  | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | 1000 |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
|           |     |     |     |     |     |     |     |     |     |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Section   Three |     |     |     |     |     |     |     |     |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Label 1   | 100 |     |     |     |     |     |     |     |     |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Label 2   | 100 | 200 |     |     |     |     |     |     |     |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Label 3   | 100 | 200 | 300 |     |     |     |     |     |     |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Label 4   | 100 | 200 | 300 | 400 |     |     |     |     |     |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Label 5   | 100 | 200 | 300 | 400 | 500 |     |     |     |     |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Label 6   | 100 | 200 | 300 | 400 | 500 | 600 |     |     |     |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Label 7   | 100 | 200 | 300 | 400 | 500 | 600 | 700 |     |     |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Label 8   | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 |     |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Label 9   | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Label 10  | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | 1000 |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+

그리고 다음 Python 코드 :

import pandas as pd
import numpy as np

spreadsheetPath = "ToSplit2.xlsx"
xls = pd.ExcelFile(spreadsheetPath)

# Iterate through worksheets in opened Excel file
for sheet in xls.sheet_names:
    # Create a Pandas dataframe from the Excel worksheet (with no headers)
    excel_data_df = pd.read_excel(
        spreadsheetPath, sheet_name=sheet, header=None)

    # Return a list of dataframe index values where entire row is blank
    indexList = excel_data_df[excel_data_df.isnull().all(1)].index.tolist()

    # Prints [11, 23]
    print(indexList)

    # Initiate a dictionary
    dataframeDictionary = {}

    # For every index value in the list
    for index in indexList:
        # Split and add the result to the dictionary of Panda's dataframes
        dataframeDictionary = np.array_split(excel_data_df, index)

    # For every pandas dataframe in the dataframe dictionary
    for dataframe in dataframeDictionary:
        # Write the pandas dataframe to Excel with a worksheet name equal to dataframe address 0,0
        dataframe.to_excel("output.xlsx",sheet_name=str(dataframe.iloc[0][0]))

빈 행을 기반으로 Excel 워크 시트를 여러 스프레드 시트로 분할하려고합니다. 예 :

섹션 1 : (섹션 2 및 섹션 3 워크 시트도 있습니다.)

+-----------------+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Section One     |     |     |     |     |     |     |     |     |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Label 1   | 100 |     |     |     |     |     |     |     |     |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Label 2   | 100 | 200 |     |     |     |     |     |     |     |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Label 3   | 100 | 200 | 300 |     |     |     |     |     |     |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Label 4   | 100 | 200 | 300 | 400 |     |     |     |     |     |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Label 5   | 100 | 200 | 300 | 400 | 500 |     |     |     |     |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Label 6   | 100 | 200 | 300 | 400 | 500 | 600 |     |     |     |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Label 7   | 100 | 200 | 300 | 400 | 500 | 600 | 700 |     |     |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Label 8   | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 |     |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Label 9   | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 |      |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+
| Label 10  | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | 1000 |
+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+

나는 내가 정말로 가깝다고 생각하지만 데이터 프레임 분할에서 미끄러지는 것 같습니다.

Abhay

파일 이름에 따라 변경하십시오.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# Read excel file
df = pd.read_excel('ToSplit2.xlsx', skip_blank_lines=False, header=None)

# Split by blank rows
df_list = np.split(df, df[df.isnull().all(1)].index)

# Create new excel to write the dataframes
writer = pd.ExcelWriter('Excel_one.xlsx', engine='xlsxwriter')
for i in range(1, len(df_list) + 1):
    df_list[i - 1] = df_list[i - 1].dropna(how='all')
    df_list[i - 1].to_excel(writer, sheet_name='Sheet{}'.format(i), header=None, index=False)
    
# Save the excel file
writer.save()

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

데이터 프레임의 인덱스 값을 기반으로 Pandas 데이터 프레임을 여러 Excel 시트로 분할

분류에서Dev

시간 빈도를 행으로 분할

분류에서Dev

표의 각 행을 여러 행으로 분할-Google 스프레드 시트

분류에서Dev

Excel 스프레드 시트를 날짜 열을 기준으로 별도의 파일로 분할

분류에서Dev

VBA를 사용하여 Excel에서 마스터 스프레드 시트를 여러 시트로 분할

분류에서Dev

VBA를 통해 Excel 스프레드 시트 분할 및 저장

분류에서Dev

Python을 사용하여 Google 스프레드 시트에서 고유 한 값으로 빈 셀 채우기

분류에서Dev

Excel 스프레드 시트를 HTML로

분류에서Dev

빈 행으로 데이터 프레임 분할

분류에서Dev

Excel 2007의 열을 기준으로 스프레드 시트를 여러 파일로 분할 할 수 있습니까?

분류에서Dev

스프레드 시트 (Excel, Google Docs 등), 쉼표로 구분 된 값 추출

분류에서Dev

Python, 고유 한 내용을 3 개 열로 결합 (Excel 스프레드 시트)

분류에서Dev

Google 스프레드 시트에서 빈 행 제거

분류에서Dev

Google 스프레드 시트 피벗-빈 행 삭제

분류에서Dev

Python : Pandas DataFrame을 Google 스프레드 시트로 내보내기 (해결됨)

분류에서Dev

pandas를 사용하여 Excel 스프레드 시트로 만든 목록은 함수로 편집 할 수 없습니까?

분류에서Dev

스프레드 시트 gem (Ruby)으로 Excel 스타일을 지정할 수 없음

분류에서Dev

시간별로 인덱싱 할 때 Pandas 데이터 프레임을 학습 및 테스트 세트로 분할

분류에서Dev

숫자의 순서에 따라 조각으로 분할 스프레드 시트

분류에서Dev

Excel 스프레드 시트를 json으로 변환

분류에서Dev

Freezepane으로 Excel 스프레드 시트 생성

분류에서Dev

ColdFusion으로 적절한 Excel 스프레드 시트를 생성 할 수 없습니다.

분류에서Dev

Excel 스프레드 시트 셀의 여러 텍스트를 여러 셀로 구문 분석합니까?

분류에서Dev

행 데이터를 기반으로 데이터 행을 다른 스프레드 시트로 정렬 Excel VBA

분류에서Dev

Python Pandas : 두 개 이상의 열에서 슬래시로 구분 된 문자열을 여러 행으로 분할

분류에서Dev

스크립트를 통해 스프레드 시트에서 빈 행 삭제

분류에서Dev

Excel-스프레드 시트 'B'의 정보를 기반으로 스프레드 시트 'A'필터링

분류에서Dev

Google 스프레드 시트 데이터를 Pandas 데이터 프레임으로

분류에서Dev

VBA 루프의 Excel 스프레드 시트에 단일 행을 삽입 할 수 없습니다.

Related 관련 기사

  1. 1

    데이터 프레임의 인덱스 값을 기반으로 Pandas 데이터 프레임을 여러 Excel 시트로 분할

  2. 2

    시간 빈도를 행으로 분할

  3. 3

    표의 각 행을 여러 행으로 분할-Google 스프레드 시트

  4. 4

    Excel 스프레드 시트를 날짜 열을 기준으로 별도의 파일로 분할

  5. 5

    VBA를 사용하여 Excel에서 마스터 스프레드 시트를 여러 시트로 분할

  6. 6

    VBA를 통해 Excel 스프레드 시트 분할 및 저장

  7. 7

    Python을 사용하여 Google 스프레드 시트에서 고유 한 값으로 빈 셀 채우기

  8. 8

    Excel 스프레드 시트를 HTML로

  9. 9

    빈 행으로 데이터 프레임 분할

  10. 10

    Excel 2007의 열을 기준으로 스프레드 시트를 여러 파일로 분할 할 수 있습니까?

  11. 11

    스프레드 시트 (Excel, Google Docs 등), 쉼표로 구분 된 값 추출

  12. 12

    Python, 고유 한 내용을 3 개 열로 결합 (Excel 스프레드 시트)

  13. 13

    Google 스프레드 시트에서 빈 행 제거

  14. 14

    Google 스프레드 시트 피벗-빈 행 삭제

  15. 15

    Python : Pandas DataFrame을 Google 스프레드 시트로 내보내기 (해결됨)

  16. 16

    pandas를 사용하여 Excel 스프레드 시트로 만든 목록은 함수로 편집 할 수 없습니까?

  17. 17

    스프레드 시트 gem (Ruby)으로 Excel 스타일을 지정할 수 없음

  18. 18

    시간별로 인덱싱 할 때 Pandas 데이터 프레임을 학습 및 테스트 세트로 분할

  19. 19

    숫자의 순서에 따라 조각으로 분할 스프레드 시트

  20. 20

    Excel 스프레드 시트를 json으로 변환

  21. 21

    Freezepane으로 Excel 스프레드 시트 생성

  22. 22

    ColdFusion으로 적절한 Excel 스프레드 시트를 생성 할 수 없습니다.

  23. 23

    Excel 스프레드 시트 셀의 여러 텍스트를 여러 셀로 구문 분석합니까?

  24. 24

    행 데이터를 기반으로 데이터 행을 다른 스프레드 시트로 정렬 Excel VBA

  25. 25

    Python Pandas : 두 개 이상의 열에서 슬래시로 구분 된 문자열을 여러 행으로 분할

  26. 26

    스크립트를 통해 스프레드 시트에서 빈 행 삭제

  27. 27

    Excel-스프레드 시트 'B'의 정보를 기반으로 스프레드 시트 'A'필터링

  28. 28

    Google 스프레드 시트 데이터를 Pandas 데이터 프레임으로

  29. 29

    VBA 루프의 Excel 스프레드 시트에 단일 행을 삽입 할 수 없습니다.

뜨겁다태그

보관