2017-01-05 3 views
0

En utilisant Python, je souhaite fusionner tous les fichiers .xls d'un répertoire en un seul bloc de données et l'enregistrer en tant que nouveau fichier .xls concaténé. Les fichiers .xls auront un nombre inconnu de colonnes et aucun en-tête cohérent.Concaténation de plusieurs fichiers .xls avec un nombre de colonnes inconnu

J'ai utilisé d'autres suggestions sur ce forum et a fini avec ceci:

import os 
import pandas as pd 

path = os.getcwd() 
files = os.listdir(path) 

files_xls = [f for f in files if f[-3:] == 'xls'] 

df = pd.DataFrame() 

for f in files_xls: 
    data = pd.read_excel(f for f in files_xls) # I dont understand what to add 
# in the parentheses here. 
    df = df.append(data) 
    df 

que je reçois ces erreurs:

File "<ipython-input-17-bb67a423cf40>", line 14, in <module> 
    data = pd.read_excel(f for f in files_xls) 

File "C:\Users\xxxx\Anaconda2\lib\site-packages\pandas\io\excel.py", line 170, in read_excel 
    io = ExcelFile(io, engine=engine) 

File "C:\Users\xxxx\Anaconda2\lib\site-packages\pandas\io\excel.py", line 229, in __init__ 
    raise ValueError('Must explicitly set engine if not passing in' 

ValueError: Must explicitly set engine if not passing in buffer or path for io. 

Répondre

1

essayer frère

df = [] 

for f in files_xls: 
    data = pd.read_excel(f) 
    df = df.append(data) 

mydf = pd.concat(df, axis = 0) 
+0

Noobie , essayé, mec. N'a pas fonctionné, tout nouvel ensemble d'erreurs. – BioProg

+0

montrent la sortie de files_xls –

+0

fonctionne jusqu'à cette partie: Out [20]: [ '20161220_VAMP2_mCherry_cell1.xls', '20161220_VAMP2_mCherry_cell10.xls', '20161220_VAMP2_mCherry_cell2.xls', '20161220_VAMP2_mCherry_cell4.xls', « 20161220_VAMP2_mCherry_cell5 .xls', '20161220_VAMP2_mCherry_cell8.xls', '20161220_VAMP2_mCherry_cell9.xls'] – BioProg