首页 > 解决方案 > 将多个excel文件编译成csv文件时,datetime变成integer dtype

问题描述

我正在使用 python 将一些 excel 文件合并到一个 csv 文件中,但是这样做时,日期时间会变成整数。所以,当我用 pandas 读回它来处理我的统一数据库时,我需要将它转换回 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))

有没有办法减少解决这个问题的步骤,只需将日期时间列写为字符串,熊猫更容易自动识别为日期?即使我必须手动传递日期时间列。

标签: pythonpandascsvxlrd

解决方案


您是否尝试将所有 excel 文件直接读入 pandas 数据框?下面的代码来自这个关于如何将多个 csv 文件导入 pandas 并连接到一个 DataFrame 的答案。我添加了 dtype,因此您可以指定哪些列应该是日期时间。

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)

推荐阅读