Импортируйте несколько листов из одного Excel в один кадр данных в pandas - PullRequest
2 голосов
/ 24 февраля 2020

У меня есть один файл Excel с несколькими одинаковыми структурированными листами (одинаковые заголовки и количество столбцов) (имя листа: 01,02, ..., 12).

Как Могу ли я получить это в одном кадре данных?

Прямо сейчас я бы загрузил все это отдельно:

df1 = pd.read_excel('path.xls', sheet_name='01')
df2 = pd.read_excel('path.xls', sheet_name='02')
...

, а затем сосредоточил бы его. Какой самый питон c способ сделать это и получить сразу один фрейм данных со всеми листами? Кроме того, предполагая, что я не знаю каждое имя листа заранее.

Ответы [ 2 ]

3 голосов
/ 24 февраля 2020

читать файл как:

collection =  pd.read_excel('path.xls', sheet_name=None)

combined = pd.concat([value.assign(sheet_source=key)
                      for key,value in collection.items()],
                     ignore_index=True)

имя_сталицы = Нет, гарантирует, что все листы будут считаны.

коллекция представляет собой словарь, ключом которого является имя_сталии, а фактические данные - значения.

в сочетании использует метод concat pandas, чтобы получить один кадр данных.

Я добавил дополнительный столбец sheet_source, если вам нужно отслеживать, откуда поступают данные для каждой строки. .

Подробнее об этом можно прочитать на pandas doco

0 голосов
/ 24 февраля 2020

вы можете использовать:

df_final = pd.concat([pd.read_excel('path.xls', sheet_name="{:02d}".format(sheet)) for sheet in range(12)], axis=0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...