2016-03-11 3 views
3

У меня есть книга Excel со многими вкладками. Каждая вкладка имеет тот же набор заголовков, что и все остальные. Я хочу объединить все данные с каждой вкладки в один фрейм данных (без повторения заголовков для каждой вкладки).pandas Комбинированные таблицы Excel

До сих пор я пытался:

import pandas as pd 
xl = pd.ExcelFile('file.xlsx') 
df = xl.parse() 

Можно использовать что-то для разбора аргументов, что будет означать «все таблицы»? Или это неправильный подход?

Заранее благодарен!

Обновление: Я пробовал:

a=xl.sheet_names 
b = pd.DataFrame() 
for i in a: 
    b.append(xl.parse(i)) 
b 

Но это не "работает".

ответ

6

Это один из способов сделать это - загрузить все листы в словарь данных, а затем объединить все значения в словаре в один фрейм.

import pandas as pd 

Набор SheetName до Ни для того, чтобы загрузить все листы в Словарь из dataframes и игнорировать индекс, чтобы избежать наложения значений позже (см замечания @bunji)

df = pd.read_excel('tmp.xlsx', sheetname=None, ignore_index=True) 

Тогда конкатенациями всех dataframes

cdf = pd.concat(df.values()) 

print(cdf) 
+4

Это очень хороший ответ. Просто быстрое добавление: индексы ваших кадров данных, вероятно, будут иметь перекрывающиеся значения, поэтому вы должны игнорировать индексы при выполнении конкатенации 'cdf = pd.concat (df.values ​​(), ignore_index = True)' – bunji

+0

Работает как шарм! – trench