Ajouter existant feuille excel avec de nouveaux dataframe à l'aide de python pandas
J'ai actuellement ce code. Il fonctionne parfaitement.
Il parcourt les fichiers excel dans un dossier,
supprime les 2 premières lignes, puis les enregistre en tant que personne de fichiers excel,
et il permet aussi d'économiser les fichiers dans la boucle comme un fichier annexe.
Actuellement le fichier annexe remplace le fichier existant chaque fois que je lance le code.
- Je besoin d'ajouter de nouvelles données à la partie inférieure de la déjà existant feuille excel ('master_data.xlsx)
dfList = []
path = 'C:\\Test\\TestRawFile'
newpath = 'C:\\Path\\To\\New\\Folder'
for fn in os.listdir(path):
# Absolute file path
file = os.path.join(path, fn)
if os.path.isfile(file):
# Import the excel file and call it xlsx_file
xlsx_file = pd.ExcelFile(file)
# View the excel files sheet names
xlsx_file.sheet_names
# Load the xlsx files Data sheet as a dataframe
df = xlsx_file.parse('Sheet1',header= None)
df_NoHeader = df[2:]
data = df_NoHeader
# Save individual dataframe
data.to_excel(os.path.join(newpath, fn))
dfList.append(data)
appended_data = pd.concat(dfList)
appended_data.to_excel(os.path.join(newpath, 'master_data.xlsx'))
Je pensais que ce serait une tâche simple, mais je ne crois pas.
Je pense que j'ai besoin de mettre dans le master_data.xlsx fichier comme un dataframe, alors correspond à l'index avec le nouveau ajouté des données, et de les enregistrer à revenir. Ou peut-être il ya un moyen plus facile. Toute Aide est appréciée.
- ça ce que vous êtes après?
- non, pas tout à fait, je ne suis pas en essayant de sauver de nouvelles feuilles, juste essayer d'ajouter la feuille.
Vous devez vous connecter pour publier un commentaire.
Une fonction d'aide pour l'ajout DataFrame de existant fichier Excel:
Exemples d'utilisation...
Vieille réponse: il vous permet d'écrire un plusieurs DataFrames à un nouveau fichier Excel.
Vous pouvez utiliser
openpyxl
moteur en conjonction avecstartrow
paramètre:c:/temp/test.xlsx:
PS vous pouvez également spécifier
header=None
si vous ne voulez pas les noms de colonne en double...Mise à JOUR: vous pouvez également vouloir vérifier cette solution
header=None
et vous devrez compter le nombre de lignes dans le fichier excel et de l'utiliser comme ceci:startrow=curr_count+1
if startrow is not None then header = False
de sorte que les en-têtes de colonne ne sont pas répétées. Merciappend_df_to_excel(filename, df, startrow=N, header=False)
😉