python - 将多个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))
有没有办法减少解决这个问题的步骤,只需将日期时间列写为字符串,熊猫更容易自动识别为日期?即使我必须手动传递日期时间列。
解决方案
您是否尝试将所有 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)
推荐阅读
- python - 为什么我的 write() 打印的是空白文本文件而不是内容 - webscraper
- ansible - Ansible:如何在嵌套变量上获取特定变量
- python - 将美国金额提取到单独的列中
- python - 使用 sns lineplot 绘制平均线
- c# - Regex.Replace 使用正则表达式作为替换
- jenkins-pipeline - 我在 Jenkins->Configure Cloud 中指定的 Jenkins 隧道地址似乎不起作用。有人可以帮助我吗?
- intellij-idea - 环绕选择成阵列
- python - 如何在散点图中显示重叠点?
- python - 如何在中间视图django中打开带有html或对话框的窗口
- javascript - 类类型化的 Rest 参数被视为来自打字稿的任何参数