旨在将大量CSV导入并合并到单个数据框中。根据是将其作为功能运行还是直接从控制台运行代码行,会有不同的错误。
在控制台中,此消息:“错误:行包含NULL字节” 从一个函数:“ TypeError:类型为bytes或bytearray的预期对象,得到:”
根据行距的数量,将导入数据,并且每行包含数据的行之间会包含一行NaN。
我尝试确定编码和不同的定界符。 chardet.detect方法将默认编码作为ascii返回。还尝试过手动保存为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,它们是同一类型仪器的输出。
如果有帮助,很乐意通过示例文件进行发送。