在Excel中,如果我们将日期时间(即(10/21/2023 2:00:49 PM))转换为我们得到的数字(45220.583900463)
使用 Udemy 我正在学习 Python,所以我为自己启动了一个项目,如果我遇到困难,我什至也使用 GPT,所以下面是我编写的代码,但我想转换我的 df1_data[“Call start Timestamp”],以便稍后我可以连接起来
from Repeat215 import REPEAT
Repeat = REPEAT()
Repeat.repeat_processing()
import xlwings as xw
import pandas as pdimport os
class REPEAT:
def init(self):
self.raw_Dir = "C:/Users/Kunal.Khaire/Desktop/My Python Projects/Report_Automation/Reports/215 Repeat/Raw"
self.raw1 = None
self.raw2 = None
self.working1 = "C:/Users/Kunal.Khaire/Desktop/My Python Projects/Report_Automation/Reports/215 Repeat/Repeat Working 1.xlsb"
self.working2 = "C:/Users/Kunal.Khaire/Desktop/My Python Projects/Report_Automation/Reports/215 Repeat/Repeat Working 2.xlsb"
self.mtd = "C:/Users/Kunal.Khaire/Desktop/My Python Projects/Report_Automation/Reports/215 Repeat/Repeat Report MTD.xlsb"
def get_raw_files(self):
"""This function get the last two file in directory"""
full_paths = [os.path.join(self.raw_Dir, file) for file in os.listdir(self.raw_Dir)]
sorted_files = sorted(full_paths, key=os.path.getmtime, reverse=True)
latest_two_files = sorted_files[:2]
self.raw1 = latest_two_files[1].replace("\\", "/")
self.raw2 = latest_two_files[0].replace("\\", "/")
def repeat_processing(self):
"""This function open 'Working1' file do the processing then
open 'Working2' file and do the processing and finally open
final 'MTD' file gets updated and saved"""
wb_W1 = xw.books.open(self.working1)
sheet = wb_W1.sheets("Previous Day")
df1 = pd.read_csv(self.raw1, encoding="utf-16", sep="\t")
if len(df1.iloc[-1, 0]) <= 20:
df1_data = df1.iloc[1:]
df1_data = df1_data.sort_values(by=["Mobile_Number", "Call start Timestamp"], ascending=[True, True])
df1_data.insert(0, "Combined", df1_data["Mobile_Number"].astype(str) + df1_data["Agent BPID"].astype(str) + df1_data["Call start Timestamp"].astype(str))
df1_data.insert(1, "Flag", df1_data["Combined"].astype(float).diff().fillna(0))
sheet["C2"].value = df1_data.values
wb_W1.save()
else:
df1 = df1.iloc[:-1]
df1_data = df1.iloc[1:]
df1_data = df1_data.sort_values(by=["Mobile_Number", "Call start Timestamp"], ascending=[True, True])
df1_data.insert(0, "Combined", df1_data["Mobile_Number"].astype(str) + df1_data["Agent BPID"].astype(str) + df1_data["Call start Timestamp"].astype(str))
df1_data.insert(1, "Flag", df1_data["Combined"].astype(float).diff().fillna(0))
sheet["C2"].value = df1_data.values
wb_W1.save()
我尝试在 GPT 中搜索,但没有任何效果尝试 to_datetime() 然后 .timestamp() 仍然不起作用 我很抱歉问了这么愚蠢的问题,但请帮助我!!
我的小测试:
import datetime
import pandas as pd
a = "10/21/2023 2:00:49 PM"
b = pd.to_datetime(a)
timestamp = b.timestamp()
print("1234" + str(timestamp))
输出:12341697896849.0而不是123445220.583900463
我在评论中给出的链接没有提供完整的答案(仅提供 Excel 日期的来源)。结合this,您可以找到Excel值如下:
import pandas as pd
dt = pd.to_datetime("10/21/2023 2:00:49 PM")
orig = pd.to_datetime('1899-12-30')
print((dt-orig) / pd.Timedelta(1, unit='d'))
输出:
45220.58390046296