在Python中像Excel一样将日期时间值转换为数字

问题描述 投票:0回答:1

在Excel中,如果我们将日期时间(即(10/21/2023 2:00:49 PM))转换为我们得到的数字(45220.583900463)

使用 Udemy 我正在学习 Python,所以我为自己启动了一个项目,如果我遇到困难,我什至也使用 GPT,所以下面是我编写的代码,但我想转换我的 df1_data[“Call start Timestamp”],以便稍后我可以连接起来

Main.py中的代码:

from Repeat215 import REPEAT
Repeat = REPEAT()
Repeat.repeat_processing()

Repeat215.py中的代码:

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

python python-3.x pandas type-conversion python-datetime
1个回答
0
投票

我在评论中给出的链接没有提供完整的答案(仅提供 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
© www.soinside.com 2019 - 2024. All rights reserved.