Заказ рабочих листов в алфавитном порядке EXCEL с использованием панд - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть много файлов с 7 листами каждый, когда они названы A, B, C ... G Они в разных порядках. Я пытаюсь объединить файлы вместе с помощью сценария ниже.

import pandas as pd

# filenames
excel_names = ["xlsx1.xlsx", "xlsx2.xlsx", "xlsx3.xlsx"]

# read them in
excels = [pd.ExcelFile(name) for name in excel_names]

# turn them into dataframes
frames = [x.parse(x.sheet_names[0], header=None,index_col=None) for x in excels]

# delete the first row for all frames except the first
# i.e. remove the header row -- assumes it's the first
frames[1:] = [df[1:] for df in frames[1:]]

# concatenate them..
combined = pd.concat(frames)

# write it out
combined.to_excel("c.xlsx", header=False, index=False)

Мне нужен единый порядок листов для каждого файла, чтобы изменить параметр [0] на [1] и т. Д. В строке.

frames = [x.parse(x.sheet_names[0], header=None,index_col=None) for x in excels]

Как мне этого добиться?

1 Ответ

0 голосов
/ 07 сентября 2018

На основании вашего кода вы можете написать:

def get_sheet(x, i):
    return x.parse(x.sheet_names[i], header=None,index_col=None)


def get_sheets(i: int, excels):
    """Return a list of every *i*-th sheet from *excels*."""     
    return  [get_sheet(x, i) for x in excels]

Это не относится к листам по именам, но, как мне кажется, способ начать.

...