Как объединить CSV-файлы с пандами - PullRequest
0 голосов
/ 20 мая 2019

Я работаю с данными и хочу объединить / объединить некоторые CSV-файлы. Я попытался код ниже, но есть проблема, у меня появляется сообщение об ошибке ниже, когда я запускаю скрипт. Кажется, он не может читать мои файлы.

Примечание: мой сценарий находится в том же месте, что и мои csv-файлы.

Как я могу это исправить?

Спасибо !!!

Я работаю над окнами и использую анаконду со Spyder. Работает на питоне 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", A & deg; С, "12,00", A & deg; С, "1,00", Люкс, 0,37,%, 487, частей на миллион, 0, "18,04", A & deg; С, "18,20", A & deg; С, "17,76", A & deg; С, "37,20",%, 0, * * одна тысяча тридцать четыре

Результат слияния

Но лист должен выглядеть так: Нормальная форма листа

1 Ответ

0 голосов
/ 20 мая 2019

Сколько файлов вы читаете, и работает ли ваш код для других файлов и не работает только для этого?Или это первый файл, который вы читаете, и он терпит неудачу?

Ошибка выглядит довольно просто: код не может найти файл.Попробуйте загрузить файл отдельно в терминале и посмотреть, что получится.Если это не работает, укажите полный путь к файлу, а затем прочитайте его.Убедитесь, что имя файла точно совпадает, так как эти пути чувствительны к регистру.

Обновление:

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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...