2017-09-07 2 views
0

Ich versuche, einen Datenrahmen zu erstellen und dann durch ein Verzeichnis mit CSV-Dateien durchlaufen und fügen Sie diese auf den Datenrahmen. Ich versuche, den folgenden Code zu verwenden:Schleife durch das Verzeichnis und erstellen Datenrahmen

df = [] 
for dirName, subdirList, fileList in os.walk(rootDir): 
    for fname in fileList: 
     df = pd.read_csv(fname) 

leider einen Fehler Ich erhalte die besagt, dass „Datei CIN_2017 existiert nicht“ (es tut). Irgendwelche Einblicke, wie all diese CSV-Dateien in einen Datenrahmen eingefügt werden können? Es ist ein .DS_Store drin, aber alles andere ist nur ein CSV. Vielen Dank.

Antwort

1

Sie können eine andere Lösung mit glob für Rückgabenamen versuchen, dann das Listenverständnis nachvollziehen und list of DataFrames erstellen. concate sie zuletzt zu einer großen df:

import glob 

files = glob.glob('files/*.csv') 
df = pd.concat([pd.read_csv(fp) for fp in files], ignore_index=True) 

Es ist die gleiche wie:

import glob 

files = glob.glob('files/*.csv') 
dfs = [] 
for fp in files: 
    dfs.append(pd.read_csv(fp)) 

df = pd.concat(dfs, ignore_index=True) 
0
import os 
import pandas as pd 

un_process_file = [] 

master_frame = pd.DataFrame(columns=['item_sku', 'external_product_id', 'standard_price', 'quantity']) 
for root, dirs, files in os.walk(os.getcwd()): 
    for file_path in files: 
     if file_path.endswith('.csv'): 
      try: 
       print file_path 
       file_name = os.path.join(root, file_path) 
       file_frames = pd.read_csv(file_name, skiprows=2, 
              usecols=['item_sku', 'external_product_id', 'standard_price', 'quantity']) 
       master_frame = master_frame.append(file_frames) 
      except: 
       un_process_file.append(file_path) 
master_frame = master_frame.rename(
    columns={'item_sku': 'sku', 'external_product_id': 'asin', 'standard_price': 'price'}) 
master_frame = master_frame.drop_duplicates(subset='asin') 
master_frame.to_csv('masterfile.txt', sep='\t') 
if un_process_file: 
    print '\nUnable To Process these files\n' 
    for files in un_process_file: 
     print files 

ich ein ähnliches Problem haben. Ich habe diese Lösung gemacht. Modifizieren Sie columns Name entsprechend Ihnen benötigen

Verwandte Themen