Ich versuche, mehrere CSV-Dateien in eine einzige große CSV für mein Dataset zusammenzuführen. Was ich suche, ist, einige Spaltendaten von mehreren CVS-Dateien zu holen und einen Datensatz daraus zu machen. Ich möchte nicht alle Spalten in meinen endgültigen Datensätzen, sondern nur wenige ausgewählte. Ich habe names
Attribut in Panda beim Lesen von CSV verwendet und es ist in Ordnung, aber ich bin nicht in der Lage, eine neue CSV aus den abgerufenen zu erstellen. Was mache ich hier falsch? Ich habe den Stack-Trace am unteren Rand hinzugefügt.Panda to_csv(): TypeError: Erzwinge Unicode: brauche String oder Puffer, Liste gefunden
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
'glob.glob' gibt eine Liste zurück. Sie müssen eine Zeichenfolge des Pfadnamens an 'big_frame.csv' übergeben. Warum brauchst du überhaupt Glob? 'big_frame.csv (os.path.join (Pfad," merge.csv "))' sollte funktionieren –
Danke.Es hat funktioniert. – Cyclotron3x3