Ausgabe
Mein Python-Code funktioniert im folgenden Beispiel korrekt. Mein Code kombiniert ein Verzeichnis von CSV-Dateien und stimmt mit den Headern überein. Ich möchte jedoch noch einen Schritt weiter gehen – wie füge ich eine Spalte hinzu, die den Dateinamen der verwendeten CSV-Datei anhängt?
import pandas as pd
import glob
globbed_files = glob.glob("*.csv") #creates a list of all csv files
data = [] # pd.concat takes a list of dataframes as an agrument
for csv in globbed_files:
frame = pd.read_csv(csv)
data.append(frame)
bigframe = pd.concat(data, ignore_index=True) #dont want pandas to try an align row indexes
bigframe.to_csv("Pandas_output2.csv")
Lösung
Das sollte funktionieren:
import os
for csv in globbed_files:
frame = pd.read_csv(csv)
frame['filename'] = os.path.basename(csv)
data.append(frame)
frame['filename']
erstellt eine neue Spalte mit dem Namen filename
und os.path.basename()
wandelt einen Pfad wie /a/d/c.txt
in den Dateinamen um c.txt
.
Beantwortet von – Mike Müller
Antwort geprüft von – Katrina (FixError Volunteer)