Панды автоматически добавляют строку и столбцы в первую позицию? - PullRequest
0 голосов
/ 21 мая 2019

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

Я использую pandas с python 3.7 и запускаю компьютер под управлением ОС Windows.Я использую Excel, чтобы открыть файлы csv.

Вот код:

import os
import pandas as pd

L_Log= os.listdir('E://PJT/TEST2/')


dfList=[]
for filename in L_Log:
    filename = "E://PJT/TEST2/" + filename
    typefile=type(filename)
    print = typefile
    print(filename)
    df=pd.read_csv(filename,header=None, sep = ';', error_bad_lines=False, encoding="ANSI")
    #df[1:] = [test[1:] for test in df[1:]]
    dfList.append(df)
concatDf=pd.concat(dfList,axis=0)
concatDf.to_csv('Concat2.csv', sep = ';')

Результат, который я получаю, показан на картинке, и то, что выделяется в Excel, это то, что я ожидаю: Изображение

Спасибо за вашу помощь!

ОБНОВЛЕНИЕ: Я немного изменил код: я удалил часть, когда она добавляет заголовки столбца, и добавил

concatDf.to_csv('Concat2.csv', sep = ';',index=False)

Вот полный новый скрипт:

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','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
    typefile=type(filename)
    print = typefile
    print(filename)
    df=pd.read_csv(filename,header=None, sep = ';', error_bad_lines=False, encoding="ANSI")
    #df[1:] = [test[1:] for test in df[1:]]
    dfList.append(df)
concatDf=pd.concat(dfList,axis=0)
#concatDf.columns=colnames
concatDf.to_csv('Concat2.csv', sep = ';',index=False)

Теперь файл кажется правильным, но: он добавляет имя столбцов для каждого файла (и, очевидно, я хочу, чтобы отображалась первая строканазвание столбца) Вот пример того, что я получаю: Что я получаю Спасибо!

1 Ответ

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

Вы можете установить для index и header значение None. (На мой взгляд, не совсем интуитивно, как должно было быть index, но columns, но что вы можете сделать.)

Чтобы избежать повторения имен ваших столбцов в данных, вам необходимо установить имена столбцов в файле csv в качестве имен столбцов в вашем фрейме данных. Вам нужно будет отредактировать параметр header в цикле for, где вы читаете файлы csv, с помощью read_csv:

for filename in L_Log:
    ...
    df=pd.read_csv(filename,header=0, ...)
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...