2016-10-15 2 views
2

Я пытаюсь написать скрипт, который будет импортировать все CSV-файлы в каталог в мое рабочее пространство в качестве dataframes. Каждый файл данных должен быть назван как файл csv (минус расширение: .csv).импортировать все файлы csv в каталог как pandas dfs и называть их как csv filenames

Это то, что я имею до сих пор, но изо всех сил пытаюсь понять, как назначить правильное имя в dataframe в цикле. Я видел сообщения, которые предлагают использовать exec(), но это не похоже на отличное решение.

path = "../3_Data/Benefits"      # dir path 
all_files = glob.glob(os.path.join(path, "*.csv")) #make list of paths 

for file in all_files: 
    dfn = file.split('\\')[-1].split('.')[0] # create string for df name 
    dfn = pd.read_csv(file,skiprows=5) # This line should assign to the value stored in dfn 

Любая помощь приветствуется, спасибо.

+2

Как насчет сохранения ваших DF в качестве словаря DF, где ключи будут называться по вашему желанию? – MaxU

+0

Я думаю, что решение MaxU является лучшим, поскольку оно позволяет вам указывать имена переменных без явного определения переменной –

+0

Спасибо @MaxU, я хотел, чтобы каждый из dfs был доступен напрямую, но теперь будет использовать словарь, как предлагается. – user

ответ

4

DataFrame не имеет name их индекс может иметь name. Вот как это установить.

import glob 
import os 

path = "./data/" 
all_files = glob.glob(os.path.join(path, "*.csv")) #make list of paths 

for file in all_files: 
    # Getting the file name without extension 
    file_name = os.path.splitext(os.path.basename(file))[0] 
    # Reading the file content to create a DataFrame 
    dfn = pd.read_csv(file) 
    # Setting the file name (without extension) as the index name 
    dfn.index.name = file_name 

# Example showing the Name in the print output 

#  FirstYear LastYear 
# Name      
# 0   1990  2007 
# 1   2001  2001 
# 2   2001  2008 
Смежные вопросы