2016-12-06 10 views
0

私は複数のCSVファイルを私のデータセット用の単一の大きなCSVにマージしようとしています。私が探しているのは、複数のCVSファイルから少数のカラムデータを取り出して、そこからデータセットを作ることです。私は最終的なデータセットのすべての列を必要としませんが、選択されたものはほとんどありません。私はnames属性をパンダでCSVを読んでいる間に使ってきましたが、それはうまく戻りましたが、取得したものから新しいCSVを作成することはできません。私はここで何が間違っていますか?スタックトレースを一番下に追加しました。パンダto_csv():TypeError:Unicodeに強制する:必要な文字列またはバッファ、リストが見つかりました

import glob 
import pandas as pd 
import os 
import time 
from datetime import datetime 
import numpy as np 

path = "C:\Users\lenovo\Downloads\Compressed\LoanStats3a.csv_2\csv" 
class MergeCsvFiles: 
def MergeCsv(self): 
    allFiles = glob.glob(os.path.join(path, "LoanStats3a.csv")) 
    print 'allFiles',allFiles 

    for file_ in allFiles: 
     print 'file_ ######### ',file_ 

     # merge_df = pd.DataFrame.from_csv(file_) 
     # print merge_df 
     fileToSave = glob.glob(os.path.join(path, "merge.csv")) 
     print 'filrToSave #### ', fileToSave 
     np_array_list = [] 

     df = pd.read_csv(file_, skipinitialspace=True,low_memory=False,header=0,index_col=None) 
     np_array_list.append(df.as_matrix()) 
     comb_np_array = np.vstack(np_array_list) 
     big_frame = pd.DataFrame(comb_np_array) 
     # big_frame.columns = fields 
     print 'big_frame#### ', big_frame 
     big_frame.to_csv(fileToSave) 

     # See the keys 
     print 'df.keys########',df.keys() 
     print 'df @@@@@', df 
     frame = pd.DataFrame() 
     list_ = [] 

     list_.append(df) 
     frame = pd.concat(list_) 
     # print 'frame#### ',frame 

     frame.to_csv(fileToSave) 

if __name__ == "__main__": 
    s = MergeCsvFiles() 
    s.MergeCsv() 

のStackTrace:

Traceback (most recent call last): 
    File "C:/Users/lenovo/Downloads/Video/Machine Learning/MLPredictiveAnalysis/MergeCsv.py", line 59, in <module> 
    s.MergeCsv() 
    File "C:/Users/lenovo/Downloads/Video/Machine Learning/MLPredictiveAnalysis/MergeCsv.py", line 39, in MergeCsv 
    big_frame.to_csv(fileToSave) 
    File "C:\Python27\lib\site-packages\pandas\core\frame.py", line 1344, in to_csv 
    formatter.save() 
    File "C:\Python27\lib\site-packages\pandas\formats\format.py", line 1526, in save 
    compression=self.compression) 
    File "C:\Python27\lib\site-packages\pandas\io\common.py", line 426, in _get_handle 
    f = open(path, mode) 
TypeError: coercing to Unicode: need string or buffer, list found 
+1

'glob.glob'はリストを返します。 'big_frame.csv'にパス名の文字列を渡す必要があります。なぜあなたはグロブを必要としますか? 'big_frame.csv(os.path.join(path、" merge.csv "))'は動作するはずです –

+0

ありがとうございました。 – Cyclotron3x3

答えて

1

glob.globリストを返します。 big_frame.csvにパス名の文字列を渡す必要があります。なぜあなたはグロブを必要としますか? big_frame.csv(os.path.join(path, "merge.csv"))が動作するはずです。

このファイルは、ループの最後にframe.to_csv(fileToSave)と書かれています。そして、すべての反復はファイルを上書きしているので、最後の反復だけがファイルを保存します。

関連する問題