Pandas在计算日期时是否考虑闰年

2024-09-27 21:32:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图用熊猫来增加148.328971年,从2000年1月1日算起。我首先将它乘以365,将其转换为天。这是我的问题,尽管可能是个愚蠢的问题

大熊猫在计算天数时会考虑闰年吗?< /强>显然答案是肯定的,因为它是计算天,但我必须确定,日期和时间的精确性在我试图做的分析中是很重要的。p>

我在使用熊猫进行计算时得到了这个结果,我不确定它是否完全正确:

03.25.2148上午1:47:09

正在使用的代码:

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

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


Tags: to答案代码importpandasas时间start
2条回答

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

假设你指的是从UTC午夜开始的民用日历年。然后148.0年将使你到达2148年1月1日,仍然是UTC午夜。由于2148年是闰年,因此0.328971将增加0.328971×366=120.403天,这将使您在协调世界时09:40到达2148年4月30日

也许你的意思是计算一些真正固定的“年”值?我们在其他情况下这样做;光年是基于平均儒略历年,因此定义为光在365.25个原子日内传播的距离。如果你是指那些年中的148.328971天,那就是54177.1567天,这将使你在协调世界时03:45到达2148年5月1日

但我们不再将儒略历用于民事目的。也许你想要取而代之的是公历的平均年份,它在西方取代了公历?那就是365.2425天;其中148.328971年为54176.0442天,从2000年1月1日回到2148年4月30日,现在仅为UTC 01:03

然后,在世界上东正教占主导地位的地区,他们改用经修订的儒略历,其平均年份为365.242天(准确地说是365天5小时48分48秒)。那些年中的148.328971年只有54176.0030天,这仍然可以让你到4月30日,但仅仅是从29日午夜后不到5分钟的时间线:00:04 UTC

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

但也许你的意思是扔掉日历,直接转到它们试图估算的值:平均热带年份!但是我们必须要问,你从哪一年开始测量,因为12月至12月的平均长度与3月至3月的平均长度不同(因为一年的长度本身是不断变化的)。当我们需要一个固定值时,我们倾向于使用平均值的平均值,可以说,取全年长度值的平均值。截至2000年,该值约为365.24219天。其中148.328971天仅为54175.9982天,这比2148年4月29日23:57 UTC还要早

然后是恒星年,尽管它被认为是地球轨道的“真实”周期,但它在天文学之外没有多大用处;可能不是那样

不管怎样,真正的问题是——这个“148.328971”数字来自哪里,背后的意图是什么?一旦你知道想要的答案实际上是什么,就很容易找到它的价值

是的。但是,从年到天的转换已经忽略了闰年。您可以乘以365.25(365.242,如注释中所示),这样可以得到更好的结果

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

此外,还可以将日期偏移与年份一起使用。但是,目前只支持整数值

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

它似乎工作得很好,但错过了几个小时

相关问题 更多 >

    热门问题