2017-02-22 11 views
0

フォルダ内の複数のファイルに対してスクリプトを実行するコードを作成中です。私は各ファイルでコードを実行することができますが、1つの出力ファイルに保存してからそのファイルに書き直しています。このコードをどのようにして出力を別々のファイルに保存するには?各元のファイルと似た名前であることが好ましい。これはこれまで私が持っていたものです。フォルダ内の複数のファイルでPythonコードを実行し、別々のファイルに書き込む

import os, re 
import pandas as pd 
directory = os.listdir('C:/Users/user/Desktop/NOV') 
os.chdir('C:/Users/user/Desktop/NOV') 

for file in directory: 
    df = pd.read_csv(file, index_col="DateTime", parse_dates=True) 
    df = df.resample('1min').mean() 
    df = df.reindex(pd.date_range(df.index.min(), df.index.max(), freq="1min")) 
    df.to_csv("newfile.csv", na_rep='NaN') 

答えて

1

あなたはいつも同じファイル名をto_csvに与えているので、明らかに同じファイルに書き込みます。拡張子のない古いものに基づいて新しいファイル名を作成するためにos.path.basenameを使用します。

df.to_csv(os.path.basename(file) + "-processed.csv", na_rep='NaN') 
1

ループの各繰り返しで最後の行のファイル名を変更するだけです。 for i, file in enumerate(directory):、次にdf.to_csv("new_" + file + ".csv", na_rep='NaN')のようになります。

1

私のアプローチ:csvファイルがないファイルをフィルタリングするglob.glob代わりos.listdir

  • 使用
  • os.chdirを実行しないでください。他のモジュールが現在のディレクトリを変更したことを認識していない可能性があります。また、dirを2回変更すると相対パスが失敗するため、glob.globを使用してください。 (ただし、"new_new_ファイルが作成されます二回実行されている)
  • 同じ名前のファイルを作成しますが、同じディレクトリ内に"new_"プレフィックスで

コード:

import os, re, glob 
import pandas as pd 

input_dir = 'C:/Users/user/Desktop/NOV' 

for file in glob.glob(os.path.join(input_dir,"*.csv")): 
    df = pd.read_csv(file, index_col="DateTime", parse_dates=True) 
    df = df.resample('1min').mean() 
    df = df.reindex(pd.date_range(df.index.min(), df.index.max(), freq="1min")) 
    new_filename = os.path.join(input_dir,"new_"+os.path_basename(file)) 
    df.to_csv(new_filename, na_rep='NaN') 
+0

なぜos.chdirは悪い習慣とみなされますか? – acb

+0

私の編集を参照してください。答えに加えられた。 –

0

「ファイル」あなたがきましたあなたのfor-loopで参照されるものは、あなたのディレクトリで操作しているファイルの文字列でなければなりません。

for file in directory: 
    print file 
    #oldfile.csv 

これを使用して、元のファイルを参照して新しいファイルを作成できます。このようなもの:

for file in directory: 
    df.to_csv("Output -" + file, na_rep='NaN') #make this the last line of your for-loop. 
    #File will be called 'Output - oldfile.csv' 
関連する問題