Хобрук: Ваш путь к мастерству в программировании

Как создать несколько фреймов данных для каждого листа в файле Excel?

У меня есть файл Excel с несколькими листами. Я хотел бы перебрать каждый лист файла Excel и создать DataFrame для каждого листа в файле. Кроме того, я хотел бы, чтобы DataFrames назывался «hfi_ (имя листа)». Это цикл for, который я написал до сих пор, но он не работает из-за синтаксической ошибки. Не могли бы вы помочь мне решить это?

for sheet in hfi_file:    
  hfi_file=pd.read_excel("/Users/glosophy/Desktop/hfi/hfi_2016.xlsx",sheet_name=sheet)
return str("hfi"+sheet)=pd.DataFrame(hfi_file)


Ответы:


1

Вам нужно сначала импортировать файл Excel, а затем прочитать каждый лист по имени

multi_sheet_file = pd.ExcelFile("/Users/glosophy/Desktop/hfi/hfi_2016.xlsx")

# Gets the sheet names in the file
excel_sheet_names = multi_sheet_file.sheet_names

dict_of_sheets = {}
for sheet in excel_sheet_names:
    dict_of_sheets["hfi" + sheet] = pd.read_excel(multi_sheet_file, sheetname=sheet')
31.08.2018
  • Это сработало! Мне интересно, как теперь превратить словари в DataFrames... ключи - это имя DataFrames, а значения - данные. Спасибо! 31.08.2018
  • Идея заключалась бы в том, чтобы получить доступ к dfs из словаря по имени по мере необходимости, но если вы имеете в виду, что хотите создать обычные переменные для каждого из них, см.: stackoverflow.com/questions/18090672/ 31.08.2018

  • 2

    Я рекомендую хранить эти кадры данных в dict

    d={"hfi" + sheet:pd.DataFrame(pd.read_excel("/Users/glosophy/Desktop/hfi/hfi_2016.xlsx", sheet_name=sheet)) for sheet in hfi_file}
    

    Затем вы можете использовать .get для доступа к данным

    d.get('your dict key')
    
    31.08.2018

    3

    Я явно медленно рисую, но вот еще один ответ:

    import pandas as pd
    
    # importing these so sessionInfo comes up for them
    import openpyxl
    import xlrd
    
    file = 'output.xlsx'
    df1 = pd.DataFrame({'col1': [1, 2], 'col2': [3, 4]})
    df2 = pd.DataFrame({'sheet2-col1': [0, 1], 'sheet2-col2': [30, 40]})
    
    writer = pd.ExcelWriter(file)
    df1.to_excel(writer, 'Sheet1')
    df2.to_excel(writer, 'Sheet2')
    writer.save()
    
    reader = pd.ExcelFile(file)
    dict = {"hfi" + i : pd.read_excel(file, sheet_name=i) for i in reader.sheet_names}
    print(dict)
    #> {'hfiSheet1':    col1  col2
    #> 0     1     3
    #> 1     2     4, 'hfiSheet2':    sheet2-col1  sheet2-col2
    #> 0            0           30
    #> 1            1           40}
    

    Создано 30 августа 2018 г. с помощью пакета reprexpy

    import reprexpy
    print(reprexpy.SessionInfo())
    #> Session info --------------------------------------------------------------------
    #> Platform: Darwin-17.7.0-x86_64-i386-64bit (64-bit)
    #> Python: 3.6
    #> Date: 2018-08-30
    #> Packages ------------------------------------------------------------------------
    #> openpyxl==2.5.6
    #> pandas==0.23.4
    #> reprexpy==0.1.1
    #> xlrd==1.1.0
    
    31.08.2018

    4

    Вот самый простой способ, которым я могу поделиться с вами:

    # read the sheet file
    import pandas as pd
    sheets = pd.ExcelFile('sheet_filename.xlsx')
    
    # save each sheet to a dataframe
    df1 = pd.read_excel(sheets, 'Sheet1')
    df2 = pd.read_excel(sheets, 'Sheet2')
    

    Надеюсь, это помогло вам!

    02.12.2019
    Новые материалы

    Аргументы прогрессивного улучшения почти всегда упускают суть
    В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

    Введение в Джанго Фреймворк
    Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..

    Настольный ПК как «одно кольцо, чтобы править всеми» домашних компьютеров
    Вид после 9 месяцев использования С настольных компьютеров все началось, но в какой-то момент они стали «серверами», и мы все перешли на ноутбуки. В прошлом году я столкнулся с идеей настольных..

    Расширенные методы безопасности для VueJS: реализация аутентификации без пароля
    Руководство, которое поможет вам создавать безопасные приложения в долгосрочной перспективе Безопасность приложений часто упускается из виду в процессе разработки, потому что основная..

    стройный-i18следующий
    Представляем стройную оболочку для i18next. Эта библиотека, основанная на i18next, заключает экземпляр i18next в хранилище svelte и отслеживает события i18next, такие как languageChanged,..

    Обзор 20 основных и современных методов работы с массивами в JavaScript
    Вы знаете их всех? В этом коротком посте я покажу сводку методов, доступных в JavaScript для работы с массивами. Я надеюсь, что вы найдете это полезным! В конце поста вы найдете ссылку на..

    Да, но я чувствую необходимость указать, что это или не единственные два.
    Да, но я чувствую необходимость указать, что это или не единственные два. Обучение с подкреплением (в качестве примера) также является важным.