Стремится импортировать и объединять многочисленные CSV в один фрейм данных. В зависимости от того, работает ли он как функция или строка кода непосредственно из консоли, возможны разные ошибки.
Из консоли это: «Ошибка: строка содержит NULL байт»
Из функции: "TypeError: Ожидаемый объект типа bytes или bytearray, полученный:"
В зависимости от количества пропусков он будет импортировать данные со строкой NaN между каждой строкой, содержащей данные.
Я попытался определить кодировку и различные разделители. Кодировка по умолчанию возвращается как ascii методом chardet.detect. Также попытались сохранить вручную как UTF 8, который, кажется, хорошо возвращает файл, если запускается из консоли.
filename = askopenfilenames()
tkinter.Tk().withdraw()
counter = 0
Ol_DF=[]
if type(filename)=='string':
filename=filename + ','
for fnm in filename: # Find length of filename and iterate
with open(fnm,'rb') as f: # open each file and declare as tempvar f
result = chardet.detect(f.readline(100))# determine csv encoding
rfindPos=fnm.rfind("/"), fnm.rfind('.csv') # find positions for string slicing
keyStr=fnm[rfindPos[0]+1:rfindPos[1]] # slice string
tmpData = pd.read_csv(fnm,skiprows = 7, error_bad_lines=False, skipfooter=3, warn_bad_lines=False,encoding=result['encoding'],engine='python',infer_datetime_format=True)
# Save to pandas dataframe
"""
Initial clean data in dataframe and add headings and keyStr as key
"""
tmpData.dropna(inplace=True) #remove NA's applies to row
HIndx=list(tmpData['Unnamed: 0']).index('Date')
tmpData.drop(tmpData.iloc[HIndx]) # drop headedex('Date') #index of header row
tmpData.rename(columns=tmpData.iloc[HIndx],inplace=True) #replace header
tmpData.key= keyStr
counter = counter +1
if counter > 1:
Ol_DF=Ol_DF.append(tmpData)
Надеясь объединить и отсортировать множество CSV, которые являются выходами одного и того же типа инструмента.
Рад отправить файл примера, если это поможет.