2016-10-15 5 views
2

ディレクトリ内のすべての.csvファイルをワークスペースにデータフレームとしてインポートするスクリプトを作成しようとしています。各データフレームの名前は、csvファイル(拡張子:.csvを除く)としてください。ディレクトリ内のすべてのcsvファイルをpandas dfsとしてインポートし、CSVファイル名として指定してください

これは私がこれまで行ってきたことですが、ループ内のデータフレームに正しい名前を割り当てる方法を理解するのには苦労しています。私は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 
関連する問題