Pour combiner efficacement plusieurs fichiers CSV dans un DataFrame unifié, une solution concise et fiable est recherchée. Cependant, un obstacle a été rencontré dans la boucle de concaténation.
Pour résoudre le problème et réussir à concaténer les fichiers CSV, l'extrait de code complet suivant peut être utilisé :
import os import pandas as pd from pathlib import Path path = r'C:\DRO\DCL_rawdata_files' all_files = Path(path).glob('*.csv') df = pd.concat((pd.read_csv(f) for f in all_files), ignore_index=True)
Ce code utilise une expression génératrice pour lire chaque fichier CSV individuellement, puis les concatène en un seul DataFrame. Le paramètre ignore_index garantit que le DataFrame concaténé a des index de lignes continus.
Dans certains scénarios, il peut être avantageux d'ajouter une colonne au DataFrame concaténé indiquant la source fichier de chaque ligne. Ceci peut être réalisé en utilisant l'une des approches suivantes :
Option 1 : Ajouter un nom de fichier en tant que nouvelle colonne
dfs = [] for f in all_files: data = pd.read_csv(f) data['file'] = f.stem dfs.append(data) df = pd.concat(dfs, ignore_index=True)
Option 2 : Ajouter un fichier générique Source en tant que nouvelle colonne
dfs = [] for i, f in enumerate(all_files): data = pd.read_csv(f) data['file'] = f'File {i}' dfs.append(data) df = pd.concat(dfs, ignore_index=True)
Option 3 : Ajouter une source de fichier à l'aide de la liste Compréhension
dfs = [pd.read_csv(f) for f in all_files] df = pd.concat(dfs, ignore_index=True) df['Source'] = np.repeat([f'S{i}' for i in range(len(dfs))], [len(df) for df in dfs])
Option 4 : Solution monoligne avec .assign()
df = pd.concat((pd.read_csv(f).assign(filename=f.stem) for f in all_files), ignore_index=True)
En implémentant l'une de ces options, le DataFrame concaténé sera annoté avec des informations permettant de retracer l'origine de chaque ligne.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!