熊猫在计算日期时考虑闰年吗?



我正在尝试使用pandas精确地从01.01.2000开始添加148.328971年。我先把它乘以365,换算成天数。所以这是我的问题,虽然可能是一个愚蠢的问题。

熊猫在计算天数时考虑闰年吗?显而易见的答案是肯定的,因为它是计算天数,但我必须确保,日期和时间的精度在我试图做的分析中很重要。

我在计算熊猫时得到这个结果,我不确定是否完全正确:

03.25.2148 1:47:09 AM

正在使用的代码:

import pandas as pd
start = "01/01/2000"
end = pd.to_datetime(start) + pd.DateOffset(days=54140.074415)
print(end)

任何帮助都将非常感激!如果这似乎是基本知识,请提前道歉,但我必须确定

如前所述,你的问题有缺陷;一年不是一个固定的时间长度。那么"148.328971年"到底是什么呢?甚至意味着什么?你的意思是148日历年加上下一个日历年的0.328971 ?如果你倒数到0.000001年的精度——一年的百万分之一,或者大约30秒——那么"01.01.2000";是一个相当不精确的起点;从2000年1月1日时间开始算起?

假设您指的是从UTC午夜开始的公历年。那么148.0年将会让你到达2148年1月1日,仍然在UTC午夜。因为2148年是闰年,0.328971 × 366 = 120.403天,这样你就到了2148年4月30日09:40 UTC。

也许你的意思是数一些"年"。值真的是固定的?我们在其他情况下也这样做;光年是以儒略历年的平均值为基础的,因此被定义为光在365.25个原子日中行进的距离。如果你指的是那些年中的148.328971年,那就是54,177.1567天,这将使你到达2148年5月1日03:45 UTC。

但是我们不再在民用领域使用儒略历了。也许你想要格里高利历的平均年份,而格里高利历在西方取代了格里高利历?正好是365.2425天;其中148.328971年是54,176.0442天,从2000年1月1日回到2148年4月30日,只有现在01:03 UTC。

然后,在世界上东正教占主导地位的部分地区,他们使用修订的儒略历,其平均年为365.242天(正好365天,5小时,48分,48秒)。的148.328971,这些年只有54,176.0030天,这仍然让你到4月30日,但刚刚从29日开始,在午夜后不到5分钟:00:04 UTC。

因此,如果你计算某种描述的日历年,你会在2148年4月30日或5月1日结束。我相信这是有帮助的。

但也许你的意思是扔掉日历,直接去他们试图近似的值:平均回归年!但接下来我们要问的是,你测量的是一年中的哪一年,因为12月至日到12月至日的平均长度与3月春分到3月春分的平均长度不同(因为一年的长度本身是不断变化的)。当我们需要一个固定的值时,我们倾向于使用平均值的平均值,也就是说,取全年长度值的平均值。截至2000年,这一数字约为365.24219天。其中148.328971只有54,175.9982天,这让你更早:4月29日,2148年23:57 UTC。

然后是恒星系年,但即使它可以说是最伟大的"真实"年;地球公转周期,它在天文学之外没有多大用处;可能不会。

无论如何,真正的问题是-这在哪里&;148.328971&;图从何而来,背后的意图是什么?一旦你知道了真正想要的答案是什么,找到它的值就很容易了。

是的。但是,从年到日的转换已经忽略了闰年。你可以乘以365.25(365.242,正如评论中建议的那样),这样会得到更好的结果。

您可以在wolframalpha上检查结果的准确性:https://www.wolframalpha.com/input/?i=148.328971+years++from+01%2F01%2F2000

此外,您可以使用带有年份的pandas DateOffset。但是,目前只支持整数值。

import pandas as pd
start = "01/01/2000"
end = pd.to_datetime(start) + pd.DateOffset(years =148, days =0.328971*365.242)
print(end)
# 2148-04-30 03:45:35.229600

似乎很有效,但错过了几个小时。

最新更新