2017-10-06 38 views
0

Je parcourt tous les fichiers Excel dans un dossier et les ajoute à une base de données. Une colonne (colonne C) a un numéro d'identification. Dans certaines feuilles, l'ID est formaté en tant que texte et dans d'autres, il est formaté en tant que nombre. Quel est le meilleur moyen de modifier le type de données pendant ou après l'importation afin que le type de données soit cohérent? Je pourrais toujours les changer dans chaque fichier Excel avant l'importation mais il y a plus de 40 feuilles.Python/glob glob - modifier le type de données lors de l'importation

for f in glob.glob(path): 
    dftemp = pd.read_excel(f,sheetname=0,skiprows=13) 
    dftemp['file_name'] = os.path.basename(f) 
    df = df.append(dftemp,ignore_index=True) 

Répondre

1

Ne pas ajouter à une trame de données dans une boucle, chaque append déplace l'ensemble dataframe vers un nouvel emplacement en mémoire, très lent. Faites un seul concat après avoir lu tous vos dataframes:

dfs = [] 
for f in glob.glob(path): 
    df = pd.read_excel(f,sheetname=0,skiprows=13) 
    df['file_name'] = os.path.basename(f) 
    df['c'] = df['c'].astype(str) 
    dfs.append(df) 

df = pd.concat(dfs, ignore_index=True) 

Il semble que votre ID, qui est la colonne c, est une chaîne, mais il lui manque parfois alphabets. Idéalement, cela devrait être utilisé comme une chaîne.