【发布时间】:2021-06-21 02:19:24
【问题描述】:
所以我需要做的是将 xlsx 文件获取到 pandas 数据框,然后对其进行一些处理并将其保存为 xlsx 文件。
我是怎么做的:
import pandas as pd
from openpyxl import load_workbook
from datetime import datetime
path = r'D:\Test\Test.xlsx'
path2 = r'D:\Test\TestResult.xlsx'
dataFrame = pd.read_excel(path, sheet_name=0, index_col=None, na_values=['NA'])
print(dataFrame.dtypes)
dataFrame.Hours = pd.to_datetime(dataFrame.Hours, format='%H:%M:%S').dt.time
print(dataFrame.dtypes)
book = load_workbook(path)
firstSheetName = book.sheetnames[0]
ws = book.get_sheet_by_name(firstSheetName)
book.remove(ws)
book.create_sheet(firstSheetName, 0)
writer = pd.ExcelWriter(path2, engine='openpyxl', date_format='yyyy-mm-dd')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
dataFrame.to_excel(writer, sheet_name=firstSheetName, index=False)
writer.save()
到目前为止一切正常,文件已保存等。 但我确实遇到的问题是,在基本文件 Test.xlsx 中,我的“小时”列是自定义类型(hh:mm:ss),当我将它导入数据框时,它被识别为“对象”类型。 此外,当我将该数据保存回 excel testResult.xlsx 时,此列将更改为“常规”。
我试图使用下面的代码将数据框中的“对象”类型更改为“日期时间”类型,但没有效果,小时仍然显示为“对象”:
dataFrame.Hours = pd.to_datetime(dataFrame.Hours, format='%H:%M:%S').dt.time
所以我需要帮助的是,如何将该数据框保存回 excel xlsx 文件,其中“小时”列设置为自定义“hh:mm:ss”???
Excel 文件是 Test.xlsx 以及它的内部外观:
https://docs.google.com/spreadsheets/d/1uu7g7xmMKy51BHpy0Up3T47VTHwtH9U_9PdlBSlaK80/edit?usp=sharing
“小时”列是自定义类型“hh:mm:ss”
【问题讨论】:
标签: python excel pandas dataframe