2017-03-01 10 views
1

複数の.csvファイルからデータを抽出し、それらをpandasの1つの大きなデータフレームに結合したい。これを行うには、受信データの1つのデータフレームを作成したデータフレーム。Python:Pandas dataframe - concatinatedの代わりにデータを上書きする

final_df = DataFrame(columns=['Column1','Column2','Column3']) 

for file in glob.glob("file.csv"): 
    name_csv = str(file) 
    logfile = pd.read_csv(name_csv, skip_blank_lines = False) 
    df = DataFrame(logFile, columns=['Column1','Column2','Column3'] 
    concat = pd.concat([final_df,df]) 

ただし、ループを繰り返すたびに、以前に抽出されたデータが上書きされます。どうすればこの問題を解決できますか?

答えて

1

あなたはlistへの最初のappendすべてdfを必要とし、その後concatを使用します。read_csvにも

いくつかの改善 - logfileは、より良いが、使用パラメータnamesで、すでにDFです。

dfs = [] 
for file in glob.glob("*.csv"): 
    logfile = pd.read_csv(str(file), 
          skip_blank_lines = False, 
          names = ['Column1','Column2','Column3']) 
    dfs.append(logfile) 

concat = pd.concat(dfs) 

または使用list comprehension

dfs = [pd.read_csv(str(file), 
     skip_blank_lines = False, 
     names = ['Column1','Column2','Column3']) for file in glob.glob("*.csv")] 

concat = pd.concat(dfs) 
+0

が見えます。 – languitar

+0

@languitar - ありがとう、訂正しました。 – jezrael

2

あなたは全くpd.concatの結果を使用していません。変数concatは各反復でただ破棄されますが、部分データフレームになります。

1

あなたはDF年代のリストを作成し、最後にそれをすべてCONCAT必要があります。括弧はあなたのリスト内包で間違っているよう

concat_list = [] 
for file in glob.glob("file.csv"): 
    name_csv = str(file) 
    logfile = pd.read_csv(name_csv, skip_blank_lines = False) 
    df = DataFrame(logFile, columns=['Column1','Column2','Column3'] 
    concat_list.appned(df) 
final_df = pd.concat(concat_list) 
+0

この場合、 'final_df'の最初のインスタンスを保持する理由はありません。それはちょうど最後に置き換えられます。 – languitar

+0

@languitar、それを忘れてしまった、ありがとう:) –

関連する問題