Создайте фрейм данных из Excel, прочитав имена листов python pandas

#python #pandas #dataframe

#python #pandas #фрейм данных

Вопрос:

У меня есть рабочая книга Excel с 4 листами с разными именами. Я хочу считывать их в фрейм данных pandas, только если они вызываются в переменной sheet_names . Например, имена листов всей книги могут быть ['banana','orange','apple','grape'] . На каждом листе есть 5 столбцов, которые я хочу прочитать в Python.

 import pandas as pd

sheet_names =['grapes','orange'] #sheet_names is what I control... it can contain any number of sheets between 1 to 4.

xlsx = pd.ExcelFile('C:\Users\Ken\Desktop\Df.xlsx')

df = []

for x in sheet_names:
    df.append(xlsx.parse(sheetname=x,index_col=0,parse_cols='B:F'))
  

Однако код возвращает список с len = 2.

Желаемый результат — фрейм данных с 10 столбцами. Пожалуйста, любая помощь?

Ответ №1:

Каждый вызов xlsx.parse() возвращает фрейм данных, который вы добавляете в df список. Итак, в вашем коде df есть список DFS. Если вы хотите объединить выбранные листы, вы можете использовать метод pd.concat():

 df = pd.concat([xlsx.parse(sheetname=x,index_col=0,parse_cols='B:F') for x in sheet_names],
               axis=1,
               ignore_index=True)
  

PS возможно, вы захотите сохранить исходные индексы — в этом случае измените ignore_index=True на ignore_index=False