我正在加载OpenPyxl中dashboard导出的excel(xlsx)文件,部分日期值默认为44774.375,需要转换为01-08-2022 09:00:00才能加载到SF表中。
此外,在 Jmeter 板中,用户给出4/21/2023 10:00:00 PM此格式,但我应该转换为21-04-2023 10:00:00
不确定如何在列FE RETA、RETA中应用这两个格式条件。
我现在正在使用下面的代码
import pandas as pd
from openpyxl import load_workbook
wb = load_workbook(filename= "file.xlsx", data_only = True)
sheet_names = wb.get_sheet_names()
name = sheet_names[0]
sheet_ranges = wb[name]
df = pd.DataFrame(sheet_ranges.values, index = none)
print(df)
#To replace (4/21/2023 10:00:00 PM) format to (21-04-2023 10:00:00)
df['FE RETA'] = pd.to_datetime(df['FE RETA'], format = '%m/%d/%Y %I:%M:%S %p', errors='coerce')
df['FE RETA'] =df['FE RETA'].dt.strftime('%d-%m-%Y %H:%m:%S')
#To replace all remaining number format to (21-04-2023 10:00:00)
#but its only working if the entire column is in number format
df['FE RETA'] = pd.to_datetime(df['FE RETA'],unit='d') + dt.datetime(1899,12,30)
print(df)
字符串
但是我的日期列也有正确的日期时间格式值。所以它把我的错误。
TypeError:时间增量标量的类型无效:<class 'datetime. datetime'>
源文件:
Tht| FE RETA | RETA | TPM SLACycletime
---------------------------------------------------------------------------
US | 4/21/2023 10:00:00 PM |4/21/2023 10:30:00 AM | Invalid Data
US | 4/22/2023 11:45:00 PM |44781.54167 | 558:19:30
US | 4/21/2023 10:30:00 AM |10-09-2022 18:03:00 | 111:44:26
US | 01-08-2022 10:00:00 |44778.41667 | 15:44:26
US | 44774.375 |44775.52083 | Invalid Data
型
预期输出:
Tht| FE RETA | RETA | TPM SLACycletime
---------------------------------------------------------------------------
US | 21-04-2023 10:00:00 |21-04-2023 10:30:00 | Invalid Data
US | 22-04-2023 11:45:00 |08-08-2022 13:00:00 | 558:19:30
US | 21-04-2023 10:30:00 |10-09-2022 18:03:00 | 111:44:26
US | 01-08-2022 10:00:00 |05-08-2022 10:00:00 | 15:44:26
US | 01-08-2022 09:00:00 |02-08-2022 12:30:00 | Invalid Data
型
用户不同意在上传时更正,他希望在自动化过程中清理日期格式。请在这方面给予帮助。
谢啦,谢啦
1条答案
按热度按时间egdjgwm81#
当转换excel datetime时,实际上有一个不同的函数:pd.to_timedelta().为了处理哪个值应该接收哪个函数,我将创建一个掩码,然后反转它(或者如果有两种以上的格式,则创建另一个掩码)。
字符串
希望这对你有用