2017-08-14 7 views
0

私はいくつかのコードを書いていますが、forループを使って名前を書く代わりに、もっときれいな方法で行いたいと思います。名前は似ていても、すべての名前を書き込まずにファイルを読むにはどうすればいいですか? Python

file_name_01 = os.path.join(input_folder_name,'subject101.dat') 
file_DF_01 = pd.read_table(file_name_01, ' ', header=None) 
file_name_02 = os.path.join(input_folder_name,'subject102.dat') 
file_DF_02 = pd.read_table(file_name_02, ' ', header=None) 
file_name_03 = os.path.join(input_folder_name,'subject103.dat') 
file_DF_03 = pd.read_table(file_name_03, ' ', header=None) 
file_name_04 = os.path.join(input_folder_name,'subject104.dat') 

しかし、私はこのような何かしたい:

私のコードがある

for(i=0, i<9, i++) 
    file_name_0%i = os.path.join(input_folder_name,'subject10%i.dat') 
    file_DF_0%i = pd.read_table(file_name_0%i, ' ', header=None) 

を私はすでに答えを探したが、私は唯一のR、Javaや他の言語のための解決策を見つけました。

私はこれをPythonで必要とします。もし誰かが私を助けることができたら、私はとても幸せになります。代わりに、動的に変数名を構築するの

答えて

1

、私はdict

files = dict() 
for i in range(9): 
    file_name = os.path.join(input_folder_name, 'subject10{}'.format(i)) 
    files[file_name] = pd.read_table(file_name , ' ', header=None) 
+0

マイナーNITで始まりながら、あなたの例の変数は1で開始辞書はファイルからのDataFramesの集合を意味するので、 'file_DFs'です。あるいは単に「DFs」。 'files'は辞書がファイルを含んでいることを意味します。 –

0

を使用する辞書は、値に変数名の関係を処理するための簡単な方法のようです。

#New dictionary 
fileDict = {} 

for i in range(1,9): 
    fileName = "file_name_0"+str(i) 
    fileDF = "file_DF_0"+str(i) 
    subjectName = "subject10"+str(i)+".dat" 

    fileDict[fileName] = os.path.join(input_folder_name,subjectName) 
    fileDict[fileDF] = pd.read_table(fileDict[fileName], ' ', header=None) 

注:OP独自の命名規則は、 `ため、おそらくより良い名前などfile_DF_01`、` file_DF_02`、だったので:あなたのループが0

+0

ありがとう!それは本当に有用だった!! :) –

関連する問題