0
votes

Ajouter une colonne à Pandas Dataframe avec nom de fichier partiel tout en important de nombreux fichiers

Je l'utilise pour créer un fichier de données géant à partir de nombreux fichiers dans un répertoire: xxx

Les fichiers de ce chemin ont des noms comme xxx < P> Comme j'importe chaque fichier, je souhaite ajouter une colonne au Dataframe qui a aaa ou bbb à côté de toutes les lignes importées à partir de ce fichier, comme ceci: < / p> xxx


2 commentaires

Quelle est la règle de savoir si [code> aaa ou bbb ?


C'est le nom du fichier, comme il est importé. Comme i .read_csv pour chaque fichier, avant de concaténer, je souhaite ajouter une colonne qui a le nom de fichier partiel.


3 Réponses :


1
votes

Vous pouvez vérifier avec clés + réinitialiser_index xxx


3 commentaires

Cela ne fonctionnera pas car chaque nom de fichier a tout le chemin inclus dans celui-ci


@aws_apprentice Vérifiez la mise à jour, je emprunte votre pureWindowsPath


@Liquidité Vérifiez la mise à jour, cela devrait légèrement plus rapide que la boucle



0
votes

Je change généralement le répertoire de travail actuel au chemin: xxx

Vous pouvez attribuer col3 pour être la partie du nom de fichier que vous souhaitez en utilisant Attribuer . xxx

afin que votre code ressemblait à: xxx

si vous ne voulez pas Modifiez le répertoire de travail actuel, puis vous pouvez utiliser os.path.basename (chemin) pour obtenir les noms de fichiers sur le chemin. Donc, votre code ressemblerait à: xxx


2 commentaires

Utilisation f.split ('.') tronque le fichier, mais inclut le chemin d'accès avant, la colonne est donc c: \\ users \\ me \\ data \\ aaa au lieu de AAA .


Oh je vois. J'utilise habituellement os.chdir (chemin) pour modifier le répertoire de travail actuel sur le chemin. Je vais mettre à jour ma réponse un peu.



2
votes

C'est une façon de le faire:

(pd.read_csv(f, sep='\t').assign(col3=PureWindowsPath(f).name.split('.')[0]) for f in all_files)


0 commentaires