如何将csv文件与熊猫连接

时间:2019-05-20 17:32:27

标签: python python-3.x pandas csv concatenation

我正在处理数据,我想合并/连接一些csv文件。 我尝试了下面的代码,但有一个问题,运行脚本时出现以下错误消息。看来它无法读取我的文件。

注意:我的scrypt与我的csv文件位于同一位置。

我该如何解决?

谢谢!!!

我正在Windows上工作,并在Spyder中使用anaconda。它运行python 3.7

import os
import pandas as pd

L_Log= os.listdir('.')

L_LogClean=[]

for k in range(len(L_Log)):
    if 'Logfile_' in L_Log[k]:
        Tempo = L_Log[k]
        Tempo2 = Tempo[12:16]+Tempo[10:12]+Tempo[8:10]
        Tempo2 = int(Tempo2)
        L_LogClean.append(Tempo2)
        L_LogClean = sorted(L_LogClean)

for k in range(len(L_LogClean)):
    Tempo = str(L_LogClean[k])
    Tempo2 = 'Logfile_' + Tempo[6:8]+Tempo[4:6]+Tempo[0:4]+'.csv'
    L_LogClean[k] = Tempo2
    print(L_LogClean)


dfList=[]
colnames=['No.','Date','Time','Temp1','Unit','Temps2','Unit','Lux2','Unit','BP1','Humidité relat','Unit','CO2','Unit','Présence','Temp1_EnO','Unit','Temp3_EnO','Unit','RH3_EnO','Unit','Chauffage']
for filename in L_LogClean:
    print(filename)
    df=pd.read_csv(filename,header=None)
    dfList.append(df)
concatDf=pd.concat(dfList,axis=0)
concatDf.columns=colnames
concatDf.to_csv('Concat.csv')

我期望一个csv文件,该文件将是按其名称排序的差异文件的串联。 当我运行脚本时,它显示了以下错误消息:

FileNotFoundError: [Errno 2] File b'Logfile_13052019.csv' does not exist: b'Logfile_13052019.csv'

但是我的文件Logfile_13052019.csv与脚本位于同一文件夹中

更新:

dfList=[]
colnames=['No.','Date','Time','Temp1','Unit','Temps2','Unit','Lux2','Unit','BP1','Humidité relat','Unit','CO2','Unit','Présence','Temp1_EnO','Unit','Temp3_EnO','Unit','RH3_EnO','Unit','Chauffage']
for filename in L_Log:
    filename = "E://PJT/TEST2/" + filename
    print(filename)
    df=pd.read_csv(filename,header=None,error_bad_lines=False, encoding = "ISO-8859-1")
    dfList.append(df)
concatDf=pd.concat(dfList,axis=0)
concatDf.columns=colnames
concatDf.to_csv('Concat.csv')

我编辑了代码,并得到了这个错误

ValueError: Length mismatch: Expected axis has 1 elements, new values have 22 elements

此脚本仍然被阻止

更新2

I added the separator type on my script :
dfList=[]
colnames=['No.','Date','Time','Temp1','Unit','Temps2','Unit','Lux2','Unit','BP1','Humidité relat','Unit','CO2','Unit','Présence','Temp1_EnO','Unit','Temp3_EnO','Unit','RH3_EnO','Unit','Chauffage']
for filename in L_Log:
    filename = "E://PJT/TEST2/" + filename
    print(filename)
    df=pd.read_csv(filename,header=None, sep = ";", error_bad_lines=False, encoding = "ISO-8859-1")
    dfList.append(df)
concatDf=pd.concat(dfList,axis=0)
concatDf.columns=colnames
concatDf.to_csv('Concat.csv')

但是我仍然将以下消息视为错误:

ValueError: Length mismatch: Expected axis has 25 elements, new values have 22 elements

更新3: 我更改了这部分

dfList=[]
colnames=['bite','No.','Date','Time','Temp1','Unit','Temp2','Unit','Lux2','Unit','BP1','Humidité Relat','Unit','CO2','Unit','Présence','Temp1_EnO','Unit','Temp2_EnO','Unit','Temp3_EnO','Unit','RH3_EnO','Unit','Chauffage']
for filename in L_Log:
    filename = "E://PJT/TEST2/" + filename
    print(filename)
    df=pd.read_csv(filename,header=None, sep = ";", error_bad_lines=False, encoding = "ISO-8859-1")
    dfList.append(df)
concatDf=pd.concat(dfList,axis=0)
concatDf.columns=colnames
concatDf.to_csv('Concat2.csv')

我在结尾处有一个串联的文件,但是当我用excel打开文件时,每一行我在每一行的第一个单元格中都有类似的内容: 1,1,13.05.2019,00:01:21,“ 18,16”,°C,“ 12,00”,°C,“ 1,00”,勒克斯,0,37,%,487, ppm,0,“ 18,04”,°C,“ 18,20”,°C,“ 17,76”,°C,“ 37,20”,%,0,

Result of merging

但是工作表应如下所示: Normal form of the sheet

1 个答案:

答案 0 :(得分:0)

您正在读取多少文件,您的代码是否可用于其他文件,并且仅对此失败?还是这是您正在读取的第一个文件,但失败了?

该错误看起来非常简单,因为代码无法找到该文件。尝试分别在终端中加载文件,然后看看会发生什么。如果它不起作用,请提供文件的完整路径,然后读取它。确保文件名完全匹配,因为这些路径区分大小写。

更新:

for filename in L_LogClean:
    filename = complete_path_of_directory + filename
    print(filename)
    df=pd.read_csv(filename,header=None)
    dfList.append(df)

更新2:

dfList=[]
colnames=['No.','Date','Time','Temp1','Unit','Temps2','Unit','Lux2','Unit','BP1','Humidité relat','Unit','CO2','Unit','Présence','Temp1_EnO','Unit','Temp3_EnO','Unit','RH3_EnO','Unit','Chauffage']
for filename in L_Log:
    filename = "E://PJT/TEST2/" + filename
    print(filename)
    df=pd.read_csv(filename,header=None, sep = ";", error_bad_lines=False, encoding = "ISO-8859-1")
    dfList.append(df)
concatDf=pd.concat(dfList,axis=0)
concatDf.columns=colnames
concatDf.to_csv('Concat.csv')