Как создать несколько DataFrames для каждого листа в файле Excel? - PullRequest
0 голосов
/ 31 августа 2018

У меня есть файл 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)

Ответы [ 3 ]

0 голосов
/ 31 августа 2018

Сначала необходимо импортировать файл 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')
0 голосов
/ 31 августа 2018

Я явно медленно на ничью, но вот другой ответ:

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}

Создано в 2018-08-30 пакетом prexpy

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
0 голосов
/ 31 августа 2018

Я буду рекомендовать хранить эти кадры данных в 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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...