【问题标题】:Date difference: different results in Excel vs. Python日期差异:Excel 与 Python 中的不同结果
【发布时间】:2020-06-21 14:10:47
【问题描述】:

我有一个带有时间戳的两个日期列的 pandas 数据框(我想保留时间戳) 我想得到这两个日期之间的天数差异,我使用了下面的。它工作得很好。

mergethetwo['diff_days']=(mergethetwo['todaydate']-mergethetwo['LastLogon']).dt.days

问题是,当我在 Excel 中得到这两个日期之间的差异时,它给了我不同的数字。

以python为例

2020 年 5 月 15 日下午 1:48:00(上次登录) 2020 年 6 月 21 日上午 12:00:00(今天)是 36 。

但是,在 Excel 中使用

DATEDIF =(LastLogon,todaydate,"d") 2020 年 5 月 15 日下午 1:48:00 2020 年 6 月 21 日上午 12:00:00 是 37 天!

为什么会有差异?我应该相信哪一个?由于我有 30,000 多行,我无法通过所有这些行来确认。

感谢您的支持 谢谢

【问题讨论】:

    标签: python excel date datetime


    【解决方案1】:

    Excel DATEDIF"D" 似乎计算“开始”天数(日期,正如函数名称所说......);而 Python timedelta 给出了实际的时间增量 - 36.425 天:

    import pandas as pd
    
    td = pd.to_datetime("6/21/2020 12:00:00 AM")-pd.to_datetime("5/15/2020 1:48:00 PM")
    # Timedelta('36 days 10:12:00')
    
    td.days
    # 36
    
    td.total_seconds() / 86400
    # 36.425
    

    如果您在 Excel 中执行todaydate-LastLogon,您将得到相同的结果,而不使用任何函数。

    【讨论】:

    • 我找不到任何关于 DATEDIF 应该与时间一起使用的参考资料,只能与日期一起使用。所以我猜时间被忽略了。
    • @Joe:说得好!人们可以从函数的名称中猜到它......在the docs 中找不到任何具体的内容,但它“四舍五入”到一整天或忽略时间。
    • 我注意到上面的 Python 数据时间,排除了两个日期。虽然 excel datedif 函数包含一个日期,这就是为什么它总是比 python datatime 多 1 天
    • @Eithar:我认为在 Excel 和 Python 中,乍一看并不完全清楚发生了什么。但是我更喜欢 Python timdelta docs,因为它是关于了解发生了什么以及如何使用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-20
    相关资源
    最近更新 更多