#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