При компиляции нескольких файлов Excel в CSV-файлы datetime превращается в целочисленный тип dtype. - PullRequest
0 голосов
/ 30 октября 2019

Я использую python для объединения некоторых файлов Excel в один файл CSV, но при этом datetime превращаются в целые числа. Поэтому, когда я читаю его обратно с помощью панд для обработки моей унифицированной базы данных, мне нужно будет преобразовать его обратно в дату и время, что возможно, но кажется ненужным. Код для чтения и компиляции файлов:

folder = Path('myPath')
os.chdir(folder)
files = sorted(os.listdir(os.getcwd()), key = os.path.getctime)

for file in files:
    with xlrd.open_workbook(folder/file) as wb:
        sh = wb.sheet_by_index(0)
        with open('Unified database.csv', 'wb') as f:
            c = csv.writer(f, encoding = 'utf-8')
            for r in range(sh.nrows):
                c.writerow(sh.row_values(r))

Есть ли способ сделать меньше шагов для решения этой проблемы, и просто записать столбцы даты и времени в виде строк, которые пандам намного легче автоматически идентифицировать какдаты? Даже если мне придется передать столбцы даты и времени вручную.

1 Ответ

0 голосов
/ 07 ноября 2019

Вы пытались прочитать все файлы Excel непосредственно в кадр данных pandas? Приведенный ниже код взят из этого ответа о том, как импортировать несколько файлов CSV в панды и объединить их в один DataFrame . Я добавил dtype, чтобы вы могли указать, какие столбцы должны быть datetime.

import pandas as pd
import glob

path = r'C:\DRO\DCL_rawdata_files' # use your path
all_files = glob.glob(path + "/*.xlsx")

li = []

for filename in all_files:
    df = pd.read_xlsx(filename, index_col=None, header=0, dtype={‘a’: np.datetime})
    li.append(df)

frame = pd.concat(li, axis=0, ignore_index=True)
...