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

2024-10-03 02:36:03 发布

您现在位置:Python中文网/ 问答频道 /正文

旨在将多个CSV导入并组合到单个数据帧中。根据是作为函数运行还是直接从控制台运行代码行,会出现不同的错误

在控制台中:“错误:行包含空字节” 从函数“TypeError:类型为bytes或bytearray的预期对象,获取:”

根据Skiprow的数量,它将导入包含数据的每一行之间带有一行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输出

如果有帮助的话,很乐意发送一个示例文件


Tags: andcsv数据truedfstringascounter