0
votes

Rejoignez plusieurs fichiers Excel dans un fichier Excel via Python

J'ai besoin de combiner tous les fichiers Excel de mon répertoire en un fichier Excel. Par exemple, j'ai 3 fichiers Excel:

File1: strong> p>

Entrez la description de l'image ici p>

Fichier 2: strong> p>

 Entrez la description de l'image ici p>

Fichier 3: strong> P>

Entrez la description de l'image ici p>

J'ai besoin de les concaténer et d'obtenir une sortie comme suit p>

 Entrez la description de l'image ici p>

Mais au lieu de cela, ils ont été annexés l'un après l'autre Ceci est mon code: P>

import pandas as pd
import numpy as np
import glob

all_data = pd.DataFrame()
for f in glob.glob('C:/Users/test-results/FinalResult/05-01-2019/*.xlsx'):
   df = pd.read_excel(f)
   all_data = all_data.append(df, ignore_index=True)

writer = pd.ExcelWriter('mycollected_data.xlsx', engine='xlsxwriter')
all_data.to_excel(writer, sheet_name='Sheet1')
writer.save()


0 commentaires

3 Réponses :


1
votes

Essayez ceci:

all_data = pd.concat ([all_data, df], axe = 1)


1 commentaires

Merci mais le fichier Excel généré a répété le nom de la colonne 3 fois, alors au lieu d'avoir 4 colonnes, j'ai six colonnes.



1
votes

Vous pouvez utiliser

files = glob.glob('C:/Users/test-results/FinalResult/05-01-2019/*.xlsx')
dfs = (pd.read_excel(f, index_col=0) for f in files)
all_data = pd.concat(dfs, axis=1)


3 commentaires

Merci mais le fichier Excel généré a répété le nom de la colonne 3 fois, alors au lieu d'avoir 4 colonnes, j'ai six colonnes.


Merci, mais je voulais dire que ma sortie comme celle-ci: Nombre de redémarrage 0 Nombre de redémarrage 0 Nombre de redémarrage 0 Passage en mode Privé 1 Passage en mode Privé 1 Passage en mode Privé 1 < / code>


Oui, je pense que je comprends l'intention; Comme pd.concat se comporte bien en ce qui concerne les indices, vous devriez pouvoir l'obtenir en spécifiant la colonne donnée comme index tout en lisant; J'ai mis à jour la réponse en conséquence.



0
votes
all_data = all_data.merge(df, on = ['first_column_name'], how = 'left')

3 commentaires

ou comment = 'intérieure'


Merci pour votre réponse, mais cela a généré un DF vide


Désolé, vous pouvez essayer de fusionner pour remplacer Join.