从Spyder中的脚本或控制台读取相同CSV时会出现不同的错误

时间:2019-05-06 15:10:28

标签: python pandas ascii spyder

旨在将大量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,它们是同一类型仪器的输出。

如果有帮助,很乐意通过示例文件进行发送。

0 个答案:

没有答案