Объедините несколько файлов Excel в один мастер-файл, используя Python - PullRequest
0 голосов
/ 05 июля 2019

Я работаю с данными своих диссертаций, где у меня есть несколько человек, выполняющих одинаковое количество экспериментов. Таким образом, человек Х имеет опыт от 1 до 7 и так далее.

Мне удалось создать 7 отдельных файлов Excel для каждого человека. Но мне нужен один файл Excel для человека x, с 7 листами с результатами каждого эксперимента.

Я много искал и не могу найти подходящего решения, надеюсь, кто-нибудь мне поможет.

counter_scenario = 1

wb = load_workbook(f'ID01_S{counter_scenario}.xlsx')
wb.create_sheet(f'ID01_S{counter_scenario}')
wb.save('ID01_No crash.xlsx')

counter_scenario += 1

Теперь я получаю файл, который перезаписывает предыдущий лист. Таким образом, в итоге у меня есть только один лист с данными из эксперимента 7. Пока я запускаю код, «главный файл» продолжает обновляться, что (для меня) указывает, что данные записываются в него, он просто перезаписывает его.

1 Ответ

2 голосов
/ 05 июля 2019

Сначала мы прочитаем в панды все рабочие книги для одного человека

df1 = pd.read_excel('person_1_exp1.xlsx')
df2 = pd.read_excel('person_1_exp2.xlsx')
df3 = pd.read_excel('person_1_exp3.xlsx')
# and so on

Давайте создадим новый файл xlsx, который будет содержать все эксперименты для каждого человека в отдельности: "Person_1_results.xlsx"

writer = pd.ExcelWriter(
    save_path.format("Person_1_results.xlsx"),
    engine='xlsxwriter')
# Convert the dataframe to an XlsxWriter Excel object.
df1.to_excel(
    writer,
    sheet_name='Experiment_1',
    startrow=0,
    startcol=0,
    index=False)
df2.to_excel(
    writer,
    sheet_name='Experiment_2',
    startrow=0,
    startcol=0,
    index=False)
df3.to_excel(
    writer,
    sheet_name='Experiment_3',
    startrow=0,
    startcol=0,
    index=False)
# and so on

# Get the xlsxwriter workbook and worksheet objects.
workbook = writer.book
worksheet1 = writer.sheets['Experiment_1']
worksheet2 = writer.sheets['Experiment_2']
worksheet2 = writer.sheets['Experiment_3']
# and so on

Если у вас одинаковые имена файлов, вы можете изменить это решение и добавить циклы для создания повторяющихся частей

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...