여러 개의 CSV 파일을 내 데이터 세트의 단일 큰 CSV로 병합하려고합니다. 내가 찾고있는 것은 여러 CVS 파일에서 소수의 열 데이터를 가져 와서 데이터 세트를 만드는 것입니다. 나는 최종 데이터 세트의 모든 컬럼을 원하지 않지만 선택된 데이터 세트는 거의 필요 없다. CSV를 읽는 동안 팬더에 names
속성을 사용했으나 정상적으로 돌아 오지만 반입 된 CSV를 새로 만들 수는 없습니다. 여기서 내가 뭘 잘못하고 있니? 하단에 스택 추적을 추가했습니다.팬더 to_csv() : TypeError : 유니 코드로 강제 변환 : 필요 문자열 또는 버퍼, 목록을 찾았습니다.
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()
스택 트레이스 :
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
'glob.glob'는 목록을 반환합니다. 'big_frame.csv'에 경로 이름의 문자열을 전달해야합니다. 너 왜 글로브가 필요한거야? 'big_frame.csv (os.path.join (path, "merge.csv"))'작동해야합니다 –
고마워요. – Cyclotron3x3