Maison > développement back-end > Tutoriel Python > Comment puis-je concaténer efficacement plusieurs fichiers CSV dans un seul DataFrame Pandas et suivre la provenance des données ?

Comment puis-je concaténer efficacement plusieurs fichiers CSV dans un seul DataFrame Pandas et suivre la provenance des données ?

Linda Hamilton
Libérer: 2024-12-22 21:33:18
original
681 Les gens l'ont consulté

How Can I Efficiently Concatenate Multiple CSV Files into a Single Pandas DataFrame and Track Data Provenance?

Concaténation de plusieurs fichiers CSV dans un seul DataFrame

Énoncé du problème

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.

Solution

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)
Copier après la connexion

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.

Ajout d'informations pour identifier la provenance des données

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)
Copier après la connexion

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)
Copier après la connexion

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])
Copier après la connexion

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)
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal